15年-16用的jsp,后來基本上沒用過了,現(xiàn)在都2022年了抛姑,我來開倒車了...
jsp出現(xiàn)的意義
Servlet就是一個能處理HTTP請求赞厕,發(fā)送HTTP響應(yīng)的小程序,而發(fā)送響應(yīng)無非就是獲取PrintWriter定硝,然后輸出HTML:
PrintWriter pw = resp.getWriter();
pw.write("<html>");
pw.write("<body>");
pw.write("<h1>Welcome, " + name + "!</h1>");
pw.write("</body>");
pw.write("</html>");
pw.flush();
那有沒有更簡單的輸出HTML的辦法皿桑?
有!
我們可以使用JSP蔬啡。
JSP是Java Server Pages的縮寫诲侮,它的文件必須放到/src/main/webapp下,文件名必須以.jsp結(jié)尾星爪,整個文件與HTML并無太大區(qū)別浆西,但需要插入變量粉私,或者動態(tài)輸出的地方顽腾,使用特殊指令<% ... %>。
語法
整個JSP的內(nèi)容實際上是一個HTML诺核,但是稍有不同:
- 包含在<%--和--%>之間的是JSP的注釋抄肖,它們會被完全忽略;
- 包含在<%和%>之間的是Java代碼窖杀,可以編寫任意Java代碼漓摩;
- 如果使用<%= xxx %>則可以快捷輸出一個變量的值。
內(nèi)置變量
JSP頁面內(nèi)置了幾個變量:
- out:表示HttpServletResponse的PrintWriter入客;
- session:表示當(dāng)前HttpSession對象管毙;
- request:表示HttpServletRequest對象。
<html>
<head>
<title>Hello World - JSP</title>
</head>
<body>
<%-- JSP Comment --%>
<h1>Hello World!</h1>
<p>
<%
out.println("Your IP address is ");
%>
<span style="color:red">
<%= request.getRemoteAddr() %>
</span>
</p>
</body>
</html>
指令
page指令引入Java類
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
include指令可以引入另一個JSP文件
<html>
<body>
<%@ include file="header.jsp"%>
<h1>Index Page</h1>
<%@ include file="footer.jsp"%>
</body>
JSP Tag
<c:out value = "${sessionScope.user.name}"/>
JSP Tag需要正確引入taglib的jar包桌硫,并且還需要正確聲明夭咬,使用起來非常復(fù)雜,對于頁面開發(fā)來說铆隘,不推薦使用JSP Tag卓舵,因為我們后續(xù)會介紹更簡單的模板引擎,這里我們不再介紹如何使用taglib膀钠。
Struts2
取值
struts2中可以使用的取值方式:
- jsp內(nèi)置對象取值
- jstl標(biāo)簽+EL表達式取值
- struts2標(biāo)簽+OGNL表達式
攔截器interceptor & 過濾器 filter
相同點:
- 都是一種java類
- 都能攔截客戶端發(fā)給服務(wù)器端的請求
- 攔截到請求之后都可以做一些相應(yīng)的處理,最后還可以把這個請求放行.
- 都需要實現(xiàn)各自相應(yīng)的接口以及在相應(yīng)的配置文件中配置.
不同點:
攔截器(interceptor)是struts2框架中的定義的,過濾器(filter)是web里面的對象,是J2EE標(biāo)準(zhǔn)里面定義的.
攔截器(interceptor)只會攔截器訪問action的請求,過濾器(filter)能夠攔截所有請求.
攔截器(interceptor)定義在struts.xml文件中,過濾器(filter)定義在web.xml文件中.
攔截器(interceptor)對象的創(chuàng)建掏湾、調(diào)用、銷毀是struts2框架負責(zé)的,過濾器(filter)對象的創(chuàng)建肿嘲、調(diào)用融击、銷毀服務(wù)器負責(zé)的.