1 - JSP入門
JSP - Javaのサーバーページは、
ユーザーの視点から、通常のページである
ビューのプログラマの観点からは、Javaクラスで、彼はサーブレットを継承し、それはJSP Serveltと言うことができます
なぜJSPのでしょうか?
ほとんどの状況下で不変な、静的なコンテンツを表示するために使用されるHTML。しかし、時には我々は、Webページ上のいくつかの動的なデータを示すために必要な
特定のクエリに学生の名前によると、クエリのすべての学生情報:などを、。これらのアクションは、データベースを照会する必要がありますし、ページに表示されます。HTMLは、書き込みJavaコードをサポートしていませんが、あなたはJSPの内部を書くことができます。
JSPの3つの命令:
1、page 2、include 3、taglib
JSP 9ビルトインオブジェクト:
1、request 2、session 3、response
4、out 5、aplication 6、config
7、jspcontext 8、exception 9、page
2 - JSPページディレクティブ
JSPページのプロパティの一部を提供することができる。<コマンド名%@%>
- 言語
表明jsp页面中可以写java代码
- contentTypeの
表明这个文件是什么类型,告诉浏览器我是什么内容类型,以及使用什么编码
contentType="text/html; charset=UTF-8" text/html MIMEType 这是一个文本,html网页
- pageEncodingは
jsp内容所使用的编码
- 拡張
用于指定jsp翻译成java文件后,继承的父类是谁,一般不用改
- インポート
导包使用的,一般不用手写
- セッション
值可选的有true or false
用于控制在这个jsp页面里面,是否能够直接使用session对象
如果该值是true,那么在代码里面会有getSession()的调用
如果该值是false,那么就不会有该方法调用,也就是没有session对象
- errorPageでは
指的是错误的页面,值需要给错误的页面路径
- isErrorPage
上面的errorPage 用于指定错误的时候跑到哪一个页面去,那么这个isErroPage就是声明某一个页面到底是不是错误的页面
3-JSPタグの一般的な指示操作
- taglib
<%@ taglib prefix="" uri=""%>
URI:タグライブラリのパスを、接頭辞:別名タグライブラリ - 含ま
<%@ include file="other02.jsp"%>
実際には、一緒にラベルのすべての要素を引き継ぐために、出力の他のページのすべての内容が含まので、少し肥大化している:の後ろに詳細を - JSP:含まれ
<jsp:include page="other02.jsp"></jsp:include>
、ここで、指定されたページが含まれている動的に含まれています。これは、ページタブが全体の出力を引き継ぐために、すべての要素が含まれていますが、その業績を引き継ぐことではありません - JSP:前方に
<jsp:forward page=""></jsp:forward>
指定されたページに、コードの内部実装はまだサーブレットによって行われます。<% //请求转发 request.getRequestDispatcher("other02.jsp").forward(request, response); %>
- JSP:のparam
手段:ページが含むか、このパラメータに参加するとすると、ページへのジャンプ<jsp:forward page="other02.jsp"> <jsp:param value="beijing" name="address"/> </jsp:forward> 在other02.jsp中获取参数: <br>收到的参数是:<br> <%= request.getParameter("address")%>
4-JSP組み込みオブジェクト(4つのスコープ)
:特に4の下で、組み込みオブジェクト我々は、JSPページ内で直接使用することができますが、これらのオブジェクトを作成しない、いわゆる
のpageContext、リクエスト、セッション、アプリケーション
- スコープ
表示这些对象可以存值,他们的取值范围有限定
スコープサイズの範囲://分别存储不同作用域数据 <% pageContext.setAttribute("name", "page"); request.setAttribute("name", "request"); session.setAttribute("name", "session"); application.setAttribute("name", "application"); %> //取出四个作用域中的值 <%=pageContext.getAttribute("name")%> <%=request.getAttribute("name")%> <%=session.getAttribute("name")%> <%=application.getAttribute("name")%>
のpageContext -現在のページ表示
要求-ディスプレイへの転送要求
のリダイレクト表示-セッション
アプリケーション-サーバーのシャットダウンして前に
4つのスコープの違い:
- pageContext PageContextの[]
>範囲は、現在のページに限定されている
>また、他の8つの組み込みオブジェクトを取得することができます - 要求[]のHttpServletRequest
>範囲は最初の要求に限定される限り、サーバが要求に応答として、ドメインに格納された値は、全く存在しません - HttpSessionのセッション] [
>セッションスコープ(複数の要求および応答)を - ServletContext [アプリケーション]
> [サーバーにアクセスすることができますプロジェクト全体を訪問した後にシャットダウンすることができません
内蔵された残りのオブジェクト:
- アウト【】のJspWriter
- 応答【HttpServletResponseの】
- 例外のThrowable【】
- ページ【課題】 - これは、Javaクラスに変換されたオブジェクトのJSPのインスタンスであります
- コンフィグ【たServletConfig】
5-EL式(使用量の値)
図1は、スコープ内に格納された値をとる4
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
<br>按普通手段取值<br>
<%= pageContext.getAttribute("name")%>
<%= request.getAttribute("name")%>
<%= session.getAttribute("name")%>
<%= application.getAttribute("name")%>
<br>使用EL表达式取出作用域中的值<br>
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }
図2に示すように、フィールドが配列に格納されている場合
<%
String [] a = {"aa","bb","cc","dd"};
pageContext.setAttribute("array", a);
%>
<br>使用EL表达式取出作用域中数组的值<br>
${array[0]},${array[1]},${array[2]},${array[3]}
3、ドメイン設定されているラッチ場合
<%
List li = new ArrayList();
li.add("nihao");
li.add("i,m");
li.add("List");
%>
<br>使用EL表达式取出作用域中集合的值<br>
${li[0]},${li[1]},${li[2]}
4、地図を設定した値をとります
<%
Map map = new HashMap();
map.put("name", "zhangsna");
map.put("age",18);
map.put("address","北京..");
map.put("address.aa","深圳..");
pageContext.setAttribute("map", map);
%>
<br>使用EL表达式取出作用域中Map的值<br>
${map.name},${map.age},${map.address},${map["address.aa"]}
6-EL式(2つの値の使用)
詳細値:
1、ドメインからの値は、あなたが最初の値を保存しなければなりません
<%
//pageContext.setAttribute("name", "zhangsan");
session.setAttribute("name", "lisi...");
%>
<br>直接指定说了,到这个作用域里面去找这个name<br>
${ pageScope.name }
<br>//先从page里面找,没有再去request、session、application找 <br>
${ name }
<br>指定从session中取值<br>
${ sessionScope.name }
2ウェイの値
、この値が目標未満である場合には、直接使用[]
<%
String[] array = {"aa","bb","cc"}
session.setAttribute("array",array);
%>
${ array[1] } --> 这里array说的是attribute的name
インデックスがない場合は、直接使用する。方法を取得します
<%
User user = new User("zhangsan",18);
session.setAttribute("u", user);
%>
${ u.name } , ${ u.age }
注意:一般使用EL表达式,用的比较多的,都是从一个对象中取出它的属性值,比如取出某一个学生的姓名
組み込みオブジェクトEL式:
$ {オブジェクト名。メンバ}
のpageContext、PAGESCOPE、requestScope
sessionScopeと、applicationScopeを、ヘッダ
headerValues、PARAM、paramValues、クッキー、initParam
7-JTSL基本的な使い方
ELは仕事を横断していない、それだけでできるJSTL値な作業かもしれ
JSTL:JSP標準タグライブラリ- JSP標準タグライブラリは
、JSPコーディング、一般的にEL式で使用し、<%%>書き込みを交換を簡素化使用
JSTLは、メソッドを導入しました:
1、輸入サポートJSTLのjarファイルは、jstl.jarとstandard.jar
EL式、バージョン1.1の導入をサポートしていないページのtaglibタグライブラリ導入バージョン1.0で使用され、2を
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL常用方法:
1、<C:セット> </ C:セット>
2、<C:もしテスト= ""> </ C:場合>
3 <C:forEachの> </ C:forEachの>
-
C:セット
<!-- 声明一个对象name,对象的值zhangsan,存储到了page(默认),指定是session --> <c:set var="name" value="zhangsan" scope="session"></c:set> ${sessionScope.name}
-
C:場合
//判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出,c:if 是没有else的 <c:set var="age" value="18" ></c:set> <c:if test="${ age > 26 }"> 年龄大于了26岁... </c:if> <c:if test="${ age <= 26 }"> 年龄小于了26岁... </c:if> ------------------------------ //定义一个变量名 flag 去接收前面表达式的值,然后存在session域中 <c:if test="${ age > 26 }" var="flag" scope="session"> 年龄大于了26岁... </c:if>
-
C:forEachの
//从1开始遍历到10,得到的结果,赋值给i,并且会存储到page域中,step增幅为2
step增幅为2的意思是:1 3 5 7 9,即输出间隔为2
<c:forEach begin="1" end="10" var="i" step="2">
${i }
</c:forEach>
-----------------------------------------------
<!-- items : 表示遍历哪一个对象,注意,这里必须写EL表达式
var: 遍历出来的每一个元素用user 去接收 -->
<c:forEach var="user" items="${list }">
${user.name } ----${user.age }
</c:forEach>
8統合された場合:学生管理システム(*)
:コンテンツの多くは、あなたがブログで見ることができますので前に書かれた学生管理システム- Webプロジェクト
HPF-自己概要
内蔵のあなたが知っているオブジェクト、EL式はマスターに、JSTLを使用します。
それは漠然とそのアイデアを覚えていますので、エラーと学生管理システムを改善するには、長い時間が続いています。
---短いステップ、千マイル;強大な急流にない小川。