ウェブレビューday06:JSP&エル&JSTL

レビュー:

セッション:コール

セッションの役割:生成されたブラウザとサーバ間の対話プロセスデータを保存します。

セッションクッキー:ブラウザ

由服务器创建

保存在浏览器上

存放的数据不安全

存放的大小受限(4kb)

存放文本格式的数据

cookie属于缓存的一种

    cookie中不能存放特殊的字符

API:

    Cookie c = new Cookie(String,String);

    c.setMaxAge(3600秒);

    response.addCookie(c); // 本质上就是给set-cookie头设置信息

    默认绑定路径: 访问路径的上一层

    c.setPath("/项目名称/aa");

    携带cookie:

        规则: 访问路径字符串包含原则

    Cookie []cookies = request.getCookies();

    cookie.getName();

    cookie.getValue();

セッションsession:サーバー

执行流程:

    请求没有携带jsessionid:

        request.getSession(); // 创建空间并返回jsessionid

    jsessionid丢失: 请求没有携带jsessionid

    携带jsessionid:

        找到了session空间,直接使用

        没有找到session空间,创建一个新的session,并返回jsessionid

API:

    request.getSession();

        //1.创建session空间,并返回jsessionid(session的唯一标识)

        //2.根据jsessionid找到对应的session空间,进行使用

session的声明周期:

    创建:

        请求不携带jsessionid就会创建session对象

        请求携带jsessionid,但未找到对应的session空间

    销毁:

        服务器非正常关闭

        session超时

        手动销毁

            session.invalidate();

3つのスコープ内のサーブレット:

request: 请求对象

    创建: 请求来的时候

    销毁: 响应信息生成的时候

    作用域范围: 当前请求

    api:

        setAttribute(String,Object); // 设置同名属性即是修改

        getAttribute(String);

        removeAttribute(String);

session: 会话对象

    创建:

        请求不携带jsessionid就会创建session对象

        请求携带jsessionid,但未找到对应的session空间

    销毁:

        服务器非正常关闭

        session超时

        手动销毁

            session.invalidate();

        作用域范围: 当前会话

        api:

            setAttribute(String,Object); // 设置同名属性即是修改

            getAttribute(String);

            removeAttribute(String);

servletContext: 上下文对象

    创建: 服务器启动时

    销毁: 服务器关闭时, 或项目从服务器上移除

    作用范围: 当前项目

    api:

            setAttribute(String,Object); // 设置同名属性即是修改

            getAttribute(String);

            removeAttribute(String);

JSP&エル&JSTL

JSP(Javaサーバページ)

JSPの概要:

JSP全名为Java Server Pages,中文名称java服务器页面,本质上就是一个Servlet,是服务器上的一种动态的网页技术.

简单理解

    在html页面中嵌套java代码

高大上理解

    将页面的展示 和 内容的生成相分离

役割:

展示动态的信息

JSP拡張

*.jsp

JSPの一部

html + java + jsp特有内容(三大指令,四大作用域,九大内置对象)

// 需求: 访问servlet返回一个表格
// 由于通过servlet返回html信息相当痛苦,我们使用jsp代替servlet完成展示.

JSPの実行プロセス

第一次访问jsp(index.jsp)页面时,服务器接收请求,由jspservlet来处理该请求.

1.jspservlet会去查找对应的jsp文件

2.找到之后,服务器会将jsp文件转换成java文件(index_jsp.java)

3.服务器编译java文件,生成class文件

4.服务器运行class文件,生成动态的内容,并返回给浏览器.

==理解:== 

    当浏览器访问 *.jsp 时,统一由JspServlet处理这类请求,

    找到对应的jsp页面,转成java类(就是Servlet)

    然后让转完后的servlet执行(_jspService),返回的信息就是jsp页面中的html代码

JSPのユニークなコンテンツ

JSPスクリプト

JSPページ内のJavaコードを記述する方法

编写java程序片段

    <% ...... %>

输出信息表达式

    <%= ... %>

声明成员变量

    <%! ... %>

JSPのコメント

    <%-- 注释内容 --%>

    注释使用时: ctrl+shift+ / 

拡張:
JSP固有のコンテンツ(3つの命令、4つのスコープ、9はビルトインオブジェクト)
の3つの命令:
ページ
のtaglib:サードパーティのタグライブラリの導入が
含まれます:他のページが含まれている
:4つのスコープ
のpageContext(PageContextの):現在のページ
要求を(HttpServletRequestの)
セッション(HttpSessionのは)
アプリケーション(のServletContext)ファイル
:9が内蔵されたオブジェクト
のJavaへのJSPページは、9は目的を達成するために定義され、JSPページを容易にする目的は、直接構築されたJSPページを使用することができたときのJspServletをオブジェクト
リクエスト・
レスポンス
セッション
ファイルアプリケーション
のpageContext
ページ
configコン
OUT
例外
+ HTMLアヤックス:
サーブレットには、本質的に、JSPのです
から成るのjsp:
HTMLのJava + + JSPの具体的な内容(3つの命令、4つのスコープ、9はビルトインオブジェクト)
のJava:
<%のジャワ%の断片>
<コンテンツ%=%出力>
<%!%宣言グローバル変数>
要求セッションスコープとのデータのJSPページのServletContext得る
; <...%%= request.getAttribute STR文字列( "AA")>
<%=%STR>
の代わりに出力<%:EL効果発現request.getAttribute =( "AA")%>
$ { "AA"}
ELとJSTL:簡素化JavaコードJSPページ、JSPページ拡張機能
EL式

フルネーム:ビルトインエルを式言語後に(表現言語)JSP2.0

役割:

主要用来代替 <%= %>

フォーマット:

${表达式}

共通の特徴

データ収集の範囲

指定されたデータドメインの取得:
<%ページのcontentType = "テキスト/ HTML;のcharset = UTF-8。" @ LANGUAGE = "Javaの" %>
<HTML>
<HEAD>
<TITLE>タイトル</ TITLE>
</ HEAD>
<BODY>
<H3>取得した単純なデータ領域情報</ H3>
<%
ドメインに//格納データ情報
pageContext.setAttribute( "PKEY"、 "p値 "); // 現在のページスコープ
request.setAttribute ( "RKEY"、 "右辺値");
にsession.setAttribute( "鍵SKey"、 "sValue");
application.setAttribute( "AKEY"、47); //のServletContext

    request.setAttribute("aa.bb","哈哈哈");
%>
<%-- pageScope: 代表的就是pageContext对象 --%>
获取pageContext域中的数据信息: <br>
原始: <%=pageContext.getAttribute("pkey")%> <br>
EL表达式: ${pageScope.pkey} <br>
<hr>
获取request域中的数据信息: <br>
原始: <%=request.getAttribute("rkey")%> <br>
EL表达式: ${requestScope.rkey} <br>
<hr>
获取session域中的数据信息: <br>
原始: <%=session.getAttribute("skey")%> <br>
EL表达式: ${sessionScope.skey} <br>
<hr>
获取servletContext域中的数据信息: <br>
原始: <%=application.getAttribute("akey")%> <br>
EL表达式: ${applicationScope.akey} <br>
<hr>
获取request域中的数据信息: <br>
原始: <%=request.getAttribute("aa.bb")%> <br>
EL表达式: ${requestScope["aa.bb"]} <br>
<hr>
获取不到信息时: <br>
原始: <%=request.getAttribute("aaaaaa")%> <br>
EL表达式: ${requestScope.aaaaaa} <br>

</ BODY>
</ HTML>
単純なデータ取得
するPageScope:pageContextの
requestScope:リクエストする
セッション:sessionScopeと
applicationScopeをする:のServletContext
見つけるのは== ==簡単に

${域中属性的名称}

    注释: 在所有作用域中依次从小到大查找指定的属性名所对应的值

         若找到立即返回并结束查询

             若找不到返回 ""

    pageContext  request  session  application

注意事項

    属性名中一旦使用了"." "+" "-"等特殊符号的时候${属性名}就取不到了,要使用{域Scope["属性名"]}

    例如:${requestScope["aa.bb"]}
<%
    request.setAttribute("aa.bb","abc");
%>
<hr>
老方式: <%=request.getAttribute("aa.bb")%> <br>
el方式: ${aa.bb}  ---  ${requestScope["aa.bb"]}
    获取复杂数据

配列内のデータを取得します

格式

    ${数组属性名称[index]}

例子:

    request.setAttribute("arr", new String[]{"aa","bb","cc"});

获取的时候

    ${arr[1]}

のデータリストを取得します。

格式

    ${list属性名[index]}

地図データ取得

格式

    ${map属性名称.键名}

データを取得中のJavaBean

格式

    ${javabean在域中的属性名称.属性名称}

JSTL:

apache出品的标签库语言

役割:

增强jsp页面的功能, 在jsp页面上少写java代码

分類

core:核心(目前还在使用)

fmt:格式化(国际化)

xml:和xml相关的(过时了)    json

sql:和sql相关的(过时了)

fn:对字符串处理的函数库(用的很少了)

これらの手順を実行します。

1.导入jar包

2.在页面上引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

ラベルの使用している場合

格式:

<!--当el表达式返回true时,标签体中的数据会被输出-->
<c:if test="el表达式">...</c:if>
<!--扩展(了解)
将el表达式的结果起个名称为flag 默认会放入page域中
page pageContext
request request
session session
application application
-->
<c:if test="el表达式" var="flag" scope="">...</c:if>
forEach标签的使用
<!-- 基本使用 -->
<c:forEach begin="从哪开始" end="到哪结束" step="步长" var="给变量起个名称">${i }</c:forEach>

<!-- 例子 -->
<c:forEach begin="1" end="20" step="1" var="i">
${i}
</c:forEach>

<!-- 高级使用 -->
<!-- 在页面上遍历数组,单列集合和map -->
<!-- 格式: -->
<c:forEach items="从域中通过el获取集合" var="n">
${n}
</c:forEach>
<!--属性:varStatus
用来记录循环状态的,有几个常用的属性:
index:
count:
first:
last:
-->
javaEE开发的模式(思想 理解)

MVC模式 -- 属于所有的web开发

发展历史

model1

        技术架构: jsp + javaBean

            jsp:负责处理业务逻辑  页面展示

            javaBean: 实体封装  负责处理简单的业务逻辑  

        优缺点

            优点

                开发效率高

            缺点

                随着业务的复杂性,导致jsp中的业务越来越多,不方便维护

model2

        技术架构:jsp+servlet+javaBean

            jsp:页面展示

            servlet:负责处理业务逻辑

            javaBean:负责处理业务逻辑  实体封装

        优缺点

            优点

                逻辑清晰 方便维护

            缺点

                小型项目开发没有 model1 效率高

M:model 模型

    封装数据 ---- javaBean

    主要封装数据 业务处理

V:view 视图

    页面展示 ---- jsp

    作用:页面展示

C:controller 控制器

    控制执行流程---- servlet

    作用:与客户端交互

javaEE的三层架构

    通过分包实现

        web(action | controller ): 接收请求和前台交互

        service: 处理业务逻辑

        dao: 操作数据库

        domain: 实体

        utils:

        jsp: 展示信息

おすすめ

転載: blog.51cto.com/13859849/2400319