JAVAスタディノート19-会話テクノロジー、MVC、3層アーキテクチャ

会話型テクノロジー

1つのセッションに複数の要求と応答があります。セッションとは、ブラウザが最初にサーバーリソースにリクエストを送信するときに、一方の当事者が切断するまでセッションが確立されることを指します。
機能:セッションの範囲内でデータを共有します。
クライアントセッションテクノロジ:Cookie
サーバーセッションテクノロジ:セッション

1.クッキー

1.1基本概念

クライアントセッションテクノロジー、データをクライアントに保存

1.2クイックスタート

手順を使用します:
1。Cookieオブジェクトを作成し、データをバインドします
new Cookie(String name、String value)
2。Cookieオブジェクトを送信します
response.addCookie(Cookie cookie)
3。Cookieを取得し、データを取得します
Cookie [] request.getCookies()

@WebServlet("/cookieDemo1")
public class CookieDemo1 extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //创建Cookie对象
        Cookie c=new Cookie("msg","hello");
        //发送Cookie
        response.addCookie(c);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request,response);
    }
}
@WebServlet("/cookieDemo2")
public class CookieDemo2 extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //获取Cookie
        Cookie[] cs=request.getCookies();
        if (cs!=null){
    
    
            for (Cookie c : cs) {
    
    
                String name = c.getName();
                String value = c.getValue();
                System.out.println(name+":"+value);
            }
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request,response);
    }
}

1.3主成分分析

応答ヘッダーセットCookieと要求ヘッダーCookieに基づく実装

1.4特徴と機能

特徴
1.クライアントブラウザに保存されるCookieデータ
2.ブラウザはCookieの単一サイズに制限され、同じドメインの総数のCookieも制限され
ます効果
1.Cookieは一般的に少量の保存に対して感度が低くなりますデータ
2.ログインせずにサーバーによるクライアントの識別を完了します

1.5アクセスケース

@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        response.setContentType("text/html;charset=utf-8");
        //获取所有Cookie
        boolean flag = false;
        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0){
    
    
            for (Cookie cookie : cookies) {
    
    
                //获取cookie名称
                String name = cookie.getName();
                if ("lastTime".equals(name)){
    
    
                    flag = true;
                    //有该cookie,不是第一次访问
                    //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    str_date = URLEncoder.encode(str_date, "utf-8");
                    cookie.setValue(str_date);
                    response.addCookie(cookie);
                    //响应数据
                    String value = cookie.getValue();
                    value = URLDecoder.decode(value,"utf-8");
                    response.getWriter().write("欢迎回来,您上次访问时间为" + value);
                    break;
                }
            }
        }
        if (cookies == null || cookies.length == 0 || flag == false){
    
    

            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String str_date = sdf.format(date);
            str_date = URLEncoder.encode(str_date, "utf-8");
            Cookie cookie = new Cookie("lastTime", str_date);
            response.addCookie(cookie);
            response.getWriter().write("欢迎您第一次访问!");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request, response);
    }
}

2.セッション

1.1基本概念

サーバー側のセッションテクノロジー、セッション内の複数のリクエスト間でデータを共有し、サーバー側のオブジェクトにデータを保存する

1.2クイックスタート

HttpSession £象:
オブジェクトgetAttribute(文字列名)
void setAttritube(文字列名、オブジェクト値)
void removeAttritube(文字列名)

@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //获取session
        HttpSession session = request.getSession();
        //存储数据
        session.setAttribute("msg","hello session");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request,response);
    }
}
@WebServlet("/sessionDemo2")
public class SessionDemo2 extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        //获取session
        HttpSession session = request.getSession();
        //获取数据
        Object msg = session.getAttribute("msg");
        System.out.println(msg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request,response);
    }
}

1.3主成分分析

セッションはCookieに依存します。Cookieを使用せずに初めてセッションを取得すると、新しいセッションがメモリに作成されます。

1.4特徴と機能

機能
1.セッションは、サーバー側に保存された、セッションに対する複数の要求のデータを保存するために使用されます
2.セッションは、任意のタイプとサイズのデータ
、セッションとCookieの違いを
保存できます1.セッションデータサーバー側に保存されます、およびCookieデータはサーバー側のクライアント
2に保存されます。セッションにはデータサイズ制限がありません。Cookieにはデータサイズ制限があり
ます。3。セッションに保存されたデータはより安全です。

3. JSP

3.1基本概念

Javaサーバーページ:Javaサーバー側ページ

3.2JSPスクリプト

JSPを使用してJavaコードを定義する方法
<%code%>:定義されたJavaコードはserviceメソッドにあります。serviceメソッドで定義できるものは、スクリプトで定義できます。
<%!Code%>:JSP変換後のJavaクラスのメンバー位置にある定義済みのJavaコード。
<%= Code%>:定義されたJavaコードがページに出力されます。出力ステートメントで定義できるもの、スクリプトで定義できるもの

3.3手順

機能:JSPページの構成とリソースファイルのインポートに使用されます
形式:<%@命令名属性名=属性値%>

3.3.1ページコマンド

JSPページの
contentTypeを構成します:response.setContentType()と同等
です1.応答本文のMIMEタイプと文字セットを
設定します2.現在のJSPページエンコーディングを設定します
import:import package

3.3.2includeディレクティブ

ページのリソースファイルをインポートします
<%@ include file =“ top.jsp”%>

3.3.3taglib命令

リソースのインポート

3.4組み込みオブジェクト

JSPオブジェクトで取得および作成する必要がなく、直接使用できるオブジェクト

pageContext:PageContextタイプ、現在のページ共有データ
要求:HttpServletRequestタイプ、複数のリソースにアクセスするための1つの要求
セッション:HttpSessionタイプ、1つのセッションで複数の要求間でデータを共有する
アプリケーション:ServletContextタイプ、複数のユーザー間でデータを共有する
応答:HttpServletResponseタイプ、応答オブジェクト
ページ:オブジェクトタイプ、現在のページの
オブジェクト出力:Jspwriterタイプ、出力オブジェクト、ページ
構成へのデータ:ServletConfigタイプ、サーブレット構成オブジェクト
例外:スロー可能タイプ、例外オブジェクト

4.EL式

4.1基本概念

式言語を
使用すると、JSPページでのJavaコードの記述を簡素化できます。
基本構文:$ {}
EL式を無視する:JSPのページコマンドでisIgnored = "true"を設定して、すべてのEL式を無視します。

4.2基本的な使用法

4.2.1操作

算術演算子:+-* /%
比較演算子:> <> = <= ==!=
論理演算子:&& ||!
空の演算子:空は、文字列、コレクション、または配列オブジェクトがnullであり、長さが0であるかどうかを判別するために使用されます

4.2.2値を取得する

構文:$ {domain name city.key name}は、指定されたドメインドメイン
名cityから指定されたキーの値を取得します
pageScope —> pageContext
requestScope —> request
sessionScope —> session
applicationScope —> application

オブジェクト値を取得します:

    <%
        Person p=new Person("Kobe",24);
        request.setAttribute("p",p);
    %>
    ${
    
    p.name}
    ${
    
    p.num}

リストコレクションを取得
$ {domain name.key name [index]}

マップコレクションを取得
$ {domain name.key name.key name}

    <%
        Person p=new Person("Kobe",24);
        request.setAttribute("p",p);
        List list=new ArrayList();
        list.add(24);
        list.add(23);
        request.setAttribute("list",list);
        Map map=new HashMap();
        map.put("name","Kobe");
        map.put("num",24);
        request.setAttribute("map",map);
    %>
    ${
    
    p.name}<br>
    ${
    
    p.num}<br>
    ${
    
    list[0]}<br>
    ${
    
    list[1]}<br>
    ${
    
    map.name}<br>
    ${
    
    map["num"]}<br>

MVC

1.JSPの進化の歴史

1.初期にはサーブレットしかなく、出力タグデータへの応答しかなかったので大変面倒でした
。2.JSPはサーブレットの開発を簡素化します。JSPを使いすぎると大量のJavaコードやHTMLが書き込まれます。分割と保守および協力の協力を困難
にするJSP3.MVC開発モデルを利用したJavaWeb開発により、プログラムの設計がより合理的になります。

2.MVC

2.1モデル

JavaBean、完全な特定のビジネスオペレーション

2.2表示

JSP、データの表示

2.3コントローラー

サーブレット、ユーザー入力の取得、モデルの呼び出し、データをビューに渡して表示します

3.長所と短所

3.1利点

低結合、保守が容易、分業とコラボレーションを促進できる
、高い再利用性

3.2デメリット

プロジェクト構造は複雑で、高度な開発者が必要です

3層アーキテクチャ

1.インターフェース層(プレゼンテーション層)

ユーザーが見ることができるインターフェース。ユーザーは、インターフェース上のコンポーネントを介してサーバーと対話できます

2.ビジネスロジック層

ビジネスロジックの処理

3.データアクセス層

運用データストレージファイル

おすすめ

転載: blog.csdn.net/qq_44708714/article/details/107523330