一、scriptlet标签:
通过scriptlet标签我们可以可以在jsp理嵌入java代码;
第一种:<%! %> 可以在里面定义全局变量、方法、类;
第二种:<% %> 可以在里面定义局部变量、编写语句;
第三种:<%= %> 在里面输出一个变量或者一个具体内容;
二、jsp包含指令:
<%@ include file="..." %> 静态包含 先包含,后编译处理
<jsp:include page="..."> 动态包含 先编译处理,后包含
以后开发用动态包含
三、jsp跳转指令:
<jsp:forward>
<jsp:param value="" name="" />
</jsp:forward>
服务器内部跳转,可带参数;
例如:
1 <jsp:forward page="target.jsp"> 2 <jsp:param value="java" name="username"/> 3 <jsp:param value="123456" name="password"/> 4 </jsp:forward> 5 6 target.jsp页面: 7 <body> 8 服务器内部跳转后的页面<br> 9 usename: <%= request.getParameter("username")%> 10 password: <%= request.getParameter("password")%> 11 </body>
还有一种跳转方式:
<% response.sendRedirect("target.jsp")%>
<jsp:forward /> 和 response.sendRedirect()的区别:
- <jsp:forward />:访问第一个界面,第一个界面调转到第二个界面,第二个界面把内容传送到客户端,客户端浏览器url显示的仍然是第一个界面的名字;跳转过程是发生在服务器端的;客户端感知不到;客户端发起的一个请求,这个请求无声无息的被转到另外一个界面进行处理;这两个界面拿到的request还是同样的、原来的那个request;拿到的request对象是同一个对象。因为就发起了一次请求;
- response.sendRedirect:如果说访问一个界面,这个界面respone.sendRedirect到另外一个界面的话,执行过程是:你访问我这个界面的话,请你重新访问另外一个界面;他会告诉客户端请你在url里面输入另外一个界面的地址,另外一个界面会将内容反馈给你,和客户端有一个来回往复的过程;使用的是不同的request;
四、jsp九大内置对象及四大作用域概述:
pageContext:request,response:session:application:config:out:page:exception
jsp四大作用域:
1.page:只在一个页面中保存数据,javax.servlet.jsp.PageContext(抽象类)
1 <body> 2 <% 3 // 设置两个page范围的数据 key-> value 4 pageContext.setAttribute("name","page王二小"); 5 pageContext.setAttribute("age",12); 6 %> 7 <% 8 // 取值 9 String name=(String)pageContext.getAttribute("name"); 10 int age=(Integer)pageContext.getAttribute("age"); 11 %> 12 <font>姓名:<%=name %></font> 13 <font>年龄:<%=age %></font> 14 </body>
2、request范围,只在一个请求中保存数据,javax.servlet.http.HttpServletRequest(接口)
1 <body> 2 <% 3 // 设置两个request范围的数据 key-> value 4 request.setAttribute("name","request王二小"); 5 request.setAttribute("age",12); 6 %> 7 <jsp:forward page="requestTarget.jsp"></jsp:forward> 8 </body> 9 10 requestTarget.jsp页面: 11 <body> 12 <% 13 // 取值 14 String name=(String)request.getAttribute("name"); 15 int age=(Integer)request.getAttribute("age"); 16 // 获取头信息 17 Enumeration enu=request.getHeaderNames(); 18 while(enu.hasMoreElements()){ 19 String headerName=(String)enu.nextElement(); 20 String headerValue=request.getHeader(headerName); 21 %> 22 <h4><%=headerName %> <%=headerValue %></h4> 23 <% 24 } 25 %> 26 <font>姓名:<%=name %></font> 27 <font>年龄:<%=age %></font> 28 </body>