一、JSP简介(略)
二、原理
index.jsp(翻译–编译.class)
静态资源:html页面,css,img
动态资源:java代码(servlet程序)
服务器的web.xml中有一个org.apachejasper.servlet.JspServlet。拦截*.jsp
1、向服务器发送请求http://localhost:8080/index.jsp
2、JspServlet拦截到这个请求
3、JspServlet找到index.jsp文件,第一次请求,将其翻译成index_jsp.java ,编译成index_jsp.class,以后每次直接就去找到这个class即可。
4、利用反射调用class文件中的jspService方法。
5、将jsp文件中的数据写出去。 out.wrtie();
三、9大隐含对象
out(JspWriter)
config(ServletConfig)
page(当前JSP的真身类型)
pageContext(PageContext)
exception(Throwable)
request(HttpServletRequest)
response(HttpServletResponse)
application(ServletContext)
4个域对象:pageContext、request、session、application。
共享数据的范围:由小到大pageContext、 request、session、application。
pageContext :当前页面共享的数据在当前页面里能取出来。
request :同一次请求共享的数据,同一请求期间可以共享(转发、重定向) 。一但response了响应就完成,当次请求就结束了。
session:同一次会话期间数据共享(浏览器打开开始会话,浏览器关闭结束会话)
application :同一个web应用中共享数据,只要服务器不关都可以使用。
四、Jsp Standard Tag Library( JSP标注标签库)
<c:forEach items="要遍历的集合" var="每次遍历出的元素的变量名">
${每次遍历出的元素的变量名}
<c:forEach>
<c:if test="判断条件"> </c:if>
五、EL
简化取值操作的
<%
String str = "aaaa";
%>
el只能取出11个对象中的值
4个域对象
hello?username="zhangsan"(reguest.getParameter())
pageScope:
requestScope:${reguestScope.username};从请求域中取出username值
${reguestScope.username} = reguest.getAttribute("username");
st和reguestScope什么关系:
class Request {
Map<String,Object> reguestScope = new HashMap <String,Object>();
public HttpSession getSession(){};
public String getParameter(String param){};
}
sessionScope;
applicationScope;
7个其他的:
param:获取请求参数的${param.username} = reguest.getParameter("username")
paramValues:获取请求参数的;${paramValues.aihao} = reguest.getParameters("username");获取多选框多选下拉列表的所有选择的内容
header:请求头
headerValues:
cookie:获取cookie的
initParam:获取web.xml中配置的初始化参数
<context-param>
<param-name>username</param-name>
<param-value>tomcat</param-value>
</context-param>