JSP数据传递详解

﹏ヽ暗。殇╰゛Y 2024-03-22 18:57 134阅读 0赞

第一节 JSP 内置对象

1. JSP 内置对象的概念

Web容器:能装在web应用的容器,比如我们所学的Tomcat(webapps文件夹下就能够装载我们的web应用)

JSP 内置对象是 Web 容器创建的一组对象,在页面中可以直接使用。JSP常用内置对象入下图所示:

482ddedbaeb843c9acad3595a46a3104.png

2. 内置对象 out

2.1 out 对象的数据类型

javax.servlet.jsp.JspWriter

2.2 作用

向Web浏览器内输出信息,负责管理对客户端的输出

2.3 用法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%
  2. <span style="color:#aa5500">//在页面上输出Hello JSP</span>
  3. <span style="color:#000000">out</span>.<span style="color:#000000">println</span>(<span style="color:#aa1111">"Hello JSP"</span>);
  4. %></span></span>

3. 内置对象 request

3.1 request 对象的数据类型

javax.servlet.http.HttpServletRequest

3.2 作用

获取客户端的参数和数据流

3.3 常用方法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//根据表单组件名称获取提交数据 </span>
  2. <span style="color:#008855">String</span> <span style="color:#0000ff">getParameter</span>(<span style="color:#008855">String</span> <span style="color:#000000">name</span>);
  3. <span style="color:#aa5500">//获取表单组件对应多个值时的请求数据</span>
  4. <span style="color:#008855">String</span>[] <span style="color:#0000ff">getParameterValues</span>(<span style="color:#008855">String</span> <span style="color:#000000">name</span>);
  5. <span style="color:#aa5500">//指定请求的编码</span>
  6. <span style="color:#008855">void</span> <span style="color:#0000ff">setCharacterEncoding</span>(<span style="color:#008855">String</span> <span style="color:#000000">charset</span>);
  7. <span style="color:#aa5500">//返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求 </span>
  8. <span style="color:#000000">RequestDispatcher</span> <span style="color:#0000ff">getRequestDispatcher</span>(<span style="color:#008855">String</span> <span style="color:#000000">path</span>);
  9. <span style="color:#aa5500">//获取客户端cookie 为什么能够获取cookie,主要是浏览器无条件的会将cookie中所有的数据在发送请求的</span>
  10. <span style="color:#aa5500">//携带上,这样,我们就可以从请求中获取cookie的信息了</span>
  11. <span style="color:#000000">Cookie</span>[] <span style="color:#0000ff">getCookies</span>();
  12. <span style="color:#aa5500">//获取请求中所有参数和参数值的映射 </span>
  13. <span style="color:#000000">Map</span><span style="color:#981a1a"><</span><span style="color:#008855">String</span>,<span style="color:#008855">String</span>[]<span style="color:#981a1a">></span> <span style="color:#0000ff">getParameterMap</span>();
  14. <span style="color:#aa5500">//获取当前会话 </span>
  15. <span style="color:#000000">HttpSession</span> <span style="color:#0000ff">getSession</span>();</span></span>

webapp目录就是我们访问视图时的根目录,根目录默认是一条斜杠,如果还存在子目录,访问的时候直接将子目录名称加上即可。如果只是访问视图,直接使用视图名即可。

“WEB-INF”这个目录下的所有内容都是受服务器保护的,不能够直接访问,只能通过服务器处理才能访问。

3.4 案例

使用内置对象 request 完成注册信息显示

register.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">form</span> <span style="color:#0000cc">action</span>=<span style="color:#aa1111">"info.jsp"</span> <span style="color:#0000cc">method</span>=<span style="color:#aa1111">"post"</span><span style="color:#117700">></span>
  2. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">><</span><span style="color:#117700">span</span><span style="color:#117700">></span>用户名<span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"text"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"username"</span><span style="color:#117700">></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">><</span><span style="color:#117700">span</span><span style="color:#117700">></span>密码<span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"password"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"password"</span><span style="color:#117700">></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  4. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  5. <span style="color:#117700"><</span><span style="color:#117700">span</span><span style="color:#117700">></span>信息来源<span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">></span>
  6. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"checkbox"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"channel"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"报刊"</span><span style="color:#117700">></span>报刊
  7. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"checkbox"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"channel"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"网络"</span><span style="color:#117700">></span>网络
  8. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"checkbox"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"channel"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"朋友推荐"</span><span style="color:#117700">></span>朋友推荐
  9. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"checkbox"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"channel"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"电视"</span><span style="color:#117700">></span> 电视
  10. <span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  11. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  12. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"submit"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"注册"</span><span style="color:#117700">></span>
  13. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"reset"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"重置"</span><span style="color:#117700">></span>
  14. <span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  15. <span style="color:#117700"></</span><span style="color:#117700">form</span><span style="color:#117700">></span></span></span>

info.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%
  2. <span style="color:#008855">String</span> <span style="color:#000000">name</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);<span style="color:#aa5500">//获取参数username的值</span>
  3. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);<span style="color:#aa5500">//获取参数password的值</span>
  4. <span style="color:#008855">String</span>[] <span style="color:#000000">channels</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameterValues</span>(<span style="color:#aa1111">"channel"</span>);<span style="color:#aa5500">//获取参数channel的值</span>
  5. <span style="color:#008855">String</span> <span style="color:#000000">channelInfo</span> <span style="color:#981a1a">=</span> <span style="color:#000000">Arrays</span>.<span style="color:#000000">toString</span>(<span style="color:#000000">channels</span>).<span style="color:#000000">replaceAll</span>(<span style="color:#aa1111">"[\\[\\]]"</span>,<span style="color:#aa1111">""</span>);
  6. %>
  7. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>用户名: <%<span style="color:#981a1a">=</span> <span style="color:#000000">name</span> %><span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  8. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>密码: <%<span style="color:#981a1a">=</span> <span style="color:#000000">password</span> %><span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  9. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>信息来源: <%<span style="color:#981a1a">=</span> <span style="color:#000000">channelInfo</span> %><span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span></span></span>

访问 register.jsp ,然后点击 注册 按钮,跳转后的页面中显示呈现乱码,如何解决呢?

在小脚本的第一行代码前面添加如下代码:

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//在从请求中获取参数值之前,先对该请求的字符集编码进行设置</span>
  2. <span style="color:#000000">request</span>.<span style="color:#000000">setCharacterEncoding</span>(<span style="color:#aa1111">"UTF-8"</span>);</span></span>

再次测试,显示正常。但如果将 form 表单的提交方式修改为 get ,再测试,又出现了乱码,这如何解释呢?

这是因为 request.setCharacterEncoding("UTF-8"); 只能解决 post 请求方式的出现的乱码,而 get 请求方式的乱码需要使用字符串转码的方式来解决。

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//使用字符串的构造方法进行转码</span>
  2. <span style="color:#770088">new</span> <span style="color:#008855">String</span>(<span style="color:#000000">字符串</span>.<span style="color:#000000">getBytes</span>(<span style="color:#aa1111">"ISO-8859-1"</span>), <span style="color:#aa1111">"UTF-8"</span>);</span></span>

转发可以访问WEB-INF下的资源,转发还可以共享请求中的参数

3.5 GET 和 POST 请求的区别

  • GET 请求的参数在URL中,而 POST 请求的参数在请求体(body) 中
  • GET 请求有数据长度限制,这个长度限制是浏览器或者服务器为了提升处理效率而做出的限制,而POST 请求没有。(HTTP协议本质就是一个有规则的字符串)
  • GET 请求的安全性低,因为参数在URL中,直接暴露了信息,而 POST 请求的安全性高,因为 POST 请求的参数在请求体(body) 中,隐藏了信息

4. 内置对象 response

4.1 response对象的数据类型

javax.servlet.http.HttpServletResponse

4.2 作用

对客户端请求做出响应

4.3 常用方法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//添加cookie</span>
  2. <span style="color:#008855">void</span> <span style="color:#0000ff">addCookie</span>(<span style="color:#000000">Cookie</span> <span style="color:#000000">c</span>);
  3. <span style="color:#aa5500">//重新定位新的资源,也叫重定向</span>
  4. <span style="color:#008855">void</span> <span style="color:#0000ff">sendRedirect</span>(<span style="color:#008855">String</span> <span style="color:#000000">url</span>);
  5. <span style="color:#aa5500">//设置响应状态码</span>
  6. <span style="color:#008855">void</span> <span style="color:#0000ff">setStatus</span>(<span style="color:#008855">int</span> <span style="color:#000000">status</span>);
  7. <span style="color:#aa5500">//获取打印流,主要用于向页面传输数据</span>
  8. <span style="color:#000000">PrintWriter</span> <span style="color:#0000ff">getWriter</span>();
  9. <span style="color:#aa5500">//获取输出流,主要用于图片传输、下载等功能</span>
  10. <span style="color:#000000">ServletOutputStream</span> <span style="color:#0000ff">getOutputStream</span>();
  11. <span style="color:#aa5500">//设置向页面输出的数据的字符集编码</span>
  12. <span style="color:#008855">void</span> <span style="color:#0000ff">setCharacterEncoding</span>(<span style="color:#008855">String</span> <span style="color:#000000">charset</span>);</span></span>

4.4 案例

实现登录页面跳转功能,并在跳转的页面中显示登录信息

login.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">form</span> <span style="color:#0000cc">action</span>=<span style="color:#aa1111">"process.jsp"</span> <span style="color:#0000cc">method</span>=<span style="color:#aa1111">"post"</span><span style="color:#117700">></span>
  2. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">><</span><span style="color:#117700">span</span><span style="color:#117700">></span>用户名<span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"text"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"username"</span><span style="color:#117700">></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">><</span><span style="color:#117700">span</span><span style="color:#117700">></span>密码<span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"password"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"password"</span><span style="color:#117700">></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  4. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  5. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"submit"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"登录"</span><span style="color:#117700">></span>
  6. <span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  7. <span style="color:#117700"></</span><span style="color:#117700">form</span><span style="color:#117700">></span></span></span>

process.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span>%>
  2. <%
  3. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);<span style="color:#aa5500">//获取参数username的值</span>
  4. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);<span style="color:#aa5500">//获取参数password的值</span>
  5. <span style="color:#770088">if</span>(<span style="color:#aa1111">"admin"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">username</span>) <span style="color:#981a1a">&&</span> <span style="color:#aa1111">"123456"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">password</span>)){
  6. <span style="color:#aa5500">//页面重定向至主页面</span>
  7. <span style="color:#000000">response</span>.<span style="color:#000000">sendRedirect</span>(<span style="color:#aa1111">"main.jsp"</span>);
  8. }
  9. %></span></span>

main.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span>%>
  2. <%
  3. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);<span style="color:#aa5500">//获取参数username的值</span>
  4. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);<span style="color:#aa5500">//获取参数password的值</span>
  5. %>
  6. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>用户名: <%<span style="color:#981a1a">=</span> <span style="color:#000000">username</span> %><span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  7. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>密码: <%<span style="color:#981a1a">=</span> <span style="color:#000000">password</span> %><span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span></span></span>

访问 login.jsp ,然后点击 登录 按钮,查看地址栏信息与页面信息。地址栏信息发生了变化,说明重定向发生在客户端,相当于客户端再发了一次请求,重新定位了新的资源。由于这次请求是新的请求,与之前的登录请求完全独立,因此页面信息中展示全是null

思考:如何才能将登录信息在跳转的页面中显示呢?

可以通过请求转发来实现,修改 process.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span>%>
  2. <%
  3. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);<span style="color:#aa5500">//获取参数username的值</span>
  4. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);<span style="color:#aa5500">//获取参数password的值</span>
  5. <span style="color:#770088">if</span>(<span style="color:#aa1111">"admin"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">username</span>) <span style="color:#981a1a">&&</span> <span style="color:#aa1111">"123456"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">password</span>)){
  6. <span style="color:#aa5500">//页面转发</span>
  7. <span style="color:#000000">request</span>.<span style="color:#000000">getRequestDispatcher</span>(<span style="color:#aa1111">"main.jsp"</span>).<span style="color:#000000">forward</span>(<span style="color:#000000">request</span>, <span style="color:#000000">response</span>);
  8. }
  9. %></span></span>

访问 login.jsp ,然后点击 登录 按钮,查看地址栏信息与页面信息。地址栏信息未发生变化,而页面进行了跳转,说明转发发生在服务器,由服务器完成。转发后,页面能够展示登录信息,说明转发可以共享请求的参数

5. 内置对象 session

5.1 session 的概念

session 就是浏览器与服务器之间的一次通话

5.2 为什么会有 session

HTTP 协议是一种无状态协议,用户在访问服务器时,服务器无法感知到用户是哪一个用户,也就无法追踪用户的后续操作。为了解决这一问题,服务器端设计了一个类 HttpSession 来感知用户,这个类产生的对象就是 session。在用户第一次访问服务器时,服务器就会为该用户生成了一个 session 对象,session 对象一产生就会生成了一个唯一标识符 JSESSIONID, 并将这个唯一标识符使用Cookie存储在浏览器中,用户后续进行的每一个操作都将携带这个唯一标识符,服务器就根据这个唯一标识符追踪用户。session 对象产生时就有一个过期时间,主要用于检测用户是否还在进行有效的操作。如果用户具有有效的操作,那么每一次用户的有效操作都将重置该session的过期时间。这个过期时间就是检测用户登录超时的依据。除此之外,session 还可以存储数据。

5.3 session 对象的数据类型

javax.servlet.http.HttpSession

5.4 常用方法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//以key/value的形式保存对象值</span>
  2. <span style="color:#008855">void</span> <span style="color:#0000ff">setAttribute</span>(<span style="color:#008855">String</span> <span style="color:#000000">key</span>, <span style="color:#008855">Object</span> <span style="color:#000000">value</span>);
  3. <span style="color:#aa5500">//通过key获取对象值</span>
  4. <span style="color:#008855">Object</span> <span style="color:#0000ff">getAttribute</span>(<span style="color:#008855">String</span> <span style="color:#000000">key</span>);
  5. <span style="color:#aa5500">//设置session对象失效</span>
  6. <span style="color:#008855">void</span> <span style="color:#0000ff">invalidate</span>();
  7. <span style="color:#aa5500">// 获取sessionid</span>
  8. <span style="color:#008855">String</span> <span style="color:#0000ff">getId</span>();
  9. <span style="color:#aa5500">//设定session的非活动时间</span>
  10. <span style="color:#008855">void</span> <span style="color:#0000ff">setMaxInactiveInterval</span>(<span style="color:#000000">intinterval</span>);
  11. <span style="color:#aa5500">//获取session的有效非活动时间(以秒为单位)</span>
  12. <span style="color:#008855">int</span> <span style="color:#0000ff">getMaxInactiveInterval</span>();
  13. <span style="color:#aa5500">//从session中删除指定名称(key)所对应的对象</span>
  14. <span style="color:#008855">void</span> <span style="color:#0000ff">removeAttribute</span>(<span style="color:#008855">String</span> <span style="color:#000000">key</span>);</span></span>

5.5 案例

使用 session 完成登录成功后页面显示登录信息,要求登录处理使用重定向。

process.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  2. <%
  3. <span style="color:#aa5500">//获取参数username的值</span>
  4. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);
  5. <span style="color:#aa5500">//获取参数password的值</span>
  6. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);
  7. <span style="color:#770088">if</span> (<span style="color:#aa1111">"admin"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">username</span>) <span style="color:#981a1a">&&</span> <span style="color:#aa1111">"123456"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">password</span>)) {
  8. <span style="color:#aa5500">//将用户名存储在session中,方便后面使用的时候获取</span>
  9. <span style="color:#000000">session</span>.<span style="color:#000000">setAttribute</span>(<span style="color:#aa1111">"user"</span>, <span style="color:#000000">username</span>);
  10. <span style="color:#aa5500">//页面重定向</span>
  11. <span style="color:#000000">response</span>.<span style="color:#000000">sendRedirect</span>(<span style="color:#aa1111">"main.jsp"</span>);
  12. }
  13. %></span></span>

main.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">nav</span><span style="color:#117700">><</span><span style="color:#117700">span</span><span style="color:#117700">></span>欢迎您,<%<span style="color:#981a1a">=</span> <span style="color:#000000">session</span>.<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"user"</span>)%><span style="color:#117700"></</span><span style="color:#117700">span</span><span style="color:#117700">></</span><span style="color:#117700">nav</span><span style="color:#117700">></span></span></span>

5.6 include 指令

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500"><!-- 语法 --></span>
  2. <%<span style="color:#555555">@</span> <span style="color:#000000">include</span> <span style="color:#000000">file</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"文件名"</span> %></span></span>

在开发过程中,开发的页面数量总是很多,如何确保用户的每一次操作都是有效操作呢?所谓的有效操作是指在登录没有超时的情况下进行的操作。

可以编写一个检测登录超时的页面,然后使用 include 指令引入至每一个页面中

timeout.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  2. <%
  3. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">String</span>)<span style="color:#000000">session</span>.<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"user"</span>);
  4. <span style="color:#770088">if</span> (<span style="color:#000000">username</span> <span style="color:#981a1a">==</span> <span style="color:#221199">null</span>)
  5. <span style="color:#000000">response</span>.<span style="color:#000000">sendRedirect</span>(<span style="color:#aa1111">"login.jsp"</span>);
  6. %></span></span>

main.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">include</span> <span style="color:#000000">file</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"timeout.jsp"</span> %></span></span>

5.7 session 超时设置

第一种方式: Tomcat 中的 web.xml

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">session-config</span><span style="color:#117700">></span>
  2. <span style="color:#aa5500"><!-- 单位:分钟 --></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">session-timeout</span><span style="color:#117700">></span>30<span style="color:#117700"></</span><span style="color:#117700">session-timeout</span><span style="color:#117700">></span>
  4. <span style="color:#117700"></</span><span style="color:#117700">session-config</span><span style="color:#117700">></span></span></span>

第二种方式: 工程中的 web.xml

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#117700"><</span><span style="color:#117700">session-config</span><span style="color:#117700">></span>
  2. <span style="color:#aa5500"><!-- 单位:分钟 --></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">session-timeout</span><span style="color:#117700">></span>30<span style="color:#117700"></</span><span style="color:#117700">session-timeout</span><span style="color:#117700">></span>
  4. <span style="color:#117700"></</span><span style="color:#117700">session-config</span><span style="color:#117700">></span></span></span>

第三种方式: Java 代码实现

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//设置会话超时时间,单位:秒</span>
  2. <span style="color:#000000">session</span>.<span style="color:#000000">setMaxInactiveInterval</span>(<span style="color:#116644">15</span> <span style="color:#981a1a">*</span> <span style="color:#116644">60</span>);</span></span>

6. 内置对象 application

6.1 application 对象的数据类型

javax.servlet.ServletContext

6.2 作用

实现用户数据共享,将信息保存在服务器中,直到服务器关闭

6.3 常用方法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">// 以key/value的形式保存对象值</span>
  2. <span style="color:#008855">void</span> <span style="color:#0000ff">setAttribute</span>(<span style="color:#008855">String</span> <span style="color:#000000">key</span>,<span style="color:#008855">Object</span> <span style="color:#000000">value</span>);
  3. <span style="color:#aa5500">//通过key获取对象值</span>
  4. <span style="color:#008855">Object</span> <span style="color:#0000ff">getAttribute</span>(<span style="color:#008855">String</span> <span style="color:#000000">key</span>);
  5. <span style="color:#aa5500">//返回相对路径的真实路径</span>
  6. <span style="color:#008855">String</span> <span style="color:#0000ff">getRealPath</span>(<span style="color:#008855">String</span> <span style="color:#000000">path</span>);</span></span>

6.4 案例

统计网站访问次数

statistics.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%
  2. <span style="color:#008855">Integer</span> <span style="color:#000000">count</span> <span style="color:#981a1a">=</span> (<span style="color:#008855">Integer</span>) <span style="color:#000000">application</span>.<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"count"</span>);
  3. <span style="color:#770088">if</span>(<span style="color:#000000">count</span> <span style="color:#981a1a">==</span> <span style="color:#221199">null</span>){
  4. <span style="color:#000000">count</span> <span style="color:#981a1a">=</span> <span style="color:#116644">1</span>;
  5. } <span style="color:#770088">else</span> {
  6. <span style="color:#000000">count</span> <span style="color:#981a1a">+=</span> <span style="color:#116644">1</span>;
  7. }
  8. <span style="color:#000000">application</span>.<span style="color:#000000">setAttribute</span>(<span style="color:#aa1111">"count"</span>, <span style="color:#000000">count</span>);
  9. %>
  10. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  11. 当前网站访问量:<%<span style="color:#981a1a">=</span> <span style="color:#000000">count</span> %>
  12. <span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span></span></span>

启动服务器,然后访问测试

Cookie 是 Web 服务器保存在客户端的一系列文本信息。Session 机制采用的是在服务端保持状态的方案,而Cookie 机制则是在客户端保持状态的方案,Cookie 又叫会话跟踪机制,用来弥补HTTP无状态协议的不足

  • 弥补HTTP无状态协议的不足
  • 简化登录,比如记住密码、自动登录等

3. 常用方法

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><span style="color:#aa5500">//构造方法</span>
  2. <span style="color:#000000">Cookie</span> <span style="color:#000000">cookie</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Cookie</span>(<span style="color:#aa1111">"名称"</span>, <span style="color:#aa1111">"值"</span>);
  3. <span style="color:#aa5500">//设置cooki的有效期,以秒为单位</span>
  4. <span style="color:#008855">void</span> <span style="color:#0000ff">setMaxAge</span>(<span style="color:#008855">int</span> <span style="color:#000000">expiry</span>);
  5. <span style="color:#aa5500">//在cookie创建后,对cookie进行赋值</span>
  6. <span style="color:#008855">void</span> <span style="color:#0000ff">setValue</span>(<span style="color:#008855">String</span> <span style="color:#000000">value</span>);
  7. <span style="color:#aa5500">//获取cookie的名称</span>
  8. <span style="color:#008855">String</span> <span style="color:#0000ff">getName</span>();
  9. <span style="color:#aa5500">//获取cookie的值</span>
  10. <span style="color:#008855">String</span> <span style="color:#0000ff">getValue</span>();
  11. <span style="color:#aa5500">//获取cookie的有效时间,以秒为单位</span>
  12. <span style="color:#008855">String</span> <span style="color:#0000ff">getMaxAge</span>();</span></span>

4. 案例

使用 Cookie 完成记住账号和密码功能

login.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#770088">import</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java.net.URLDecoder"</span> %>
  2. <%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  3. <span style="color:#555555"><!DOCTYPE html></span>
  4. <span style="color:#117700"><</span><span style="color:#117700">html</span><span style="color:#117700">></span>
  5. <span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  6. <span style="color:#117700"><</span><span style="color:#117700">meta</span> <span style="color:#0000cc">charset</span>=<span style="color:#aa1111">"utf-8"</span><span style="color:#117700">></span>
  7. <span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>登录<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
  8. <span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  9. <span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  10. <%
  11. <span style="color:#aa5500">// 用户名</span>
  12. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">""</span>;
  13. <span style="color:#aa5500">// 登录密码</span>
  14. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">""</span>;
  15. <span style="color:#aa5500">// 复选框是否选中</span>
  16. <span style="color:#008855">String</span> <span style="color:#000000">checked</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">""</span>;
  17. <span style="color:#aa5500">// 获取的是请求里的所有cookie组成的数组</span>
  18. <span style="color:#000000">Cookie</span>[] <span style="color:#000000">cookies</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getCookies</span>();
  19. <span style="color:#aa5500">// 如果cookies数组不为空对其进行遍历</span>
  20. <span style="color:#770088">if</span> (<span style="color:#000000">cookies</span> <span style="color:#981a1a">!=</span> <span style="color:#221199">null</span> <span style="color:#981a1a">&&</span> <span style="color:#000000">cookies</span>.<span style="color:#000000">length</span> <span style="color:#981a1a">></span> <span style="color:#116644">0</span>) {
  21. <span style="color:#aa5500">// 循环遍历Cookie</span>
  22. <span style="color:#770088">for</span> (<span style="color:#008855">int</span> <span style="color:#000000">i</span> <span style="color:#981a1a">=</span> <span style="color:#116644">0</span>; <span style="color:#000000">i</span> <span style="color:#981a1a"><</span> <span style="color:#000000">cookies</span>.<span style="color:#000000">length</span>; <span style="color:#000000">i</span><span style="color:#981a1a">++</span>) {
  23. <span style="color:#aa5500">// 获取Cookie对象</span>
  24. <span style="color:#000000">Cookie</span> <span style="color:#000000">cookie</span> <span style="color:#981a1a">=</span> <span style="color:#000000">cookies</span>[<span style="color:#000000">i</span>];
  25. <span style="color:#aa5500">// 将创建的cookie名与获取的cookie数组中已经存在的cookie名进行比较</span>
  26. <span style="color:#770088">if</span> (<span style="color:#aa1111">"username"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">cookie</span>.<span style="color:#000000">getName</span>())) {
  27. <span style="color:#aa5500">// "name"是在另一个jsp文件中创建的cookie名</span>
  28. <span style="color:#aa5500">// 获取名字叫做"name"的cookie的值</span>
  29. <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">URLDecoder</span>.<span style="color:#000000">decode</span>(<span style="color:#000000">cookie</span>.<span style="color:#000000">getValue</span>(), <span style="color:#aa1111">"utf-8"</span>);
  30. <span style="color:#aa5500">// 将“记住我”设置为勾选</span>
  31. <span style="color:#000000">checked</span> <span style="color:#981a1a">=</span> <span style="color:#aa1111">"checked"</span>;
  32. }
  33. <span style="color:#aa5500">// 将创建的cookie名与获取的cookie数组中已经存在的cookie名进行比较</span>
  34. <span style="color:#770088">if</span> (<span style="color:#aa1111">"password"</span>.<span style="color:#000000">equals</span>(<span style="color:#000000">cookie</span>.<span style="color:#000000">getName</span>())) {
  35. <span style="color:#aa5500">// "password"是在另一个jsp文件中创建的cookie名</span>
  36. <span style="color:#aa5500">// 获取名字叫做"password"的cookie的值</span>
  37. <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">cookie</span>.<span style="color:#000000">getValue</span>();
  38. }
  39. }
  40. }
  41. %>
  42. <span style="color:#117700"><</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  43. <span style="color:#117700"><</span><span style="color:#117700">h1</span><span style="color:#117700">></span>用户登录<span style="color:#117700"></</span><span style="color:#117700">h1</span><span style="color:#117700">></span>
  44. <span style="color:#117700"><</span><span style="color:#117700">form</span> <span style="color:#0000cc">action</span>=<span style="color:#aa1111">"login.jsp"</span> <span style="color:#0000cc">method</span>=<span style="color:#aa1111">"POST"</span><span style="color:#117700">></span>
  45. <%<span style="color:#981a1a">--<%=</span><span style="color:#000000">user</span>%>指的是将获取的cookie值放进输入框内--%>
  46. <span style="color:#117700"><</span><span style="color:#117700">img</span> <span style="color:#0000cc">src</span>=<span style="color:#aa1111">"img/login.png"</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"text"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"username"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"</span><%<span style="color:#981a1a">=</span><span style="color:#000000">user</span>%><span style="color:#aa1111">"</span><span style="color:#117700">/><</span><span style="color:#117700">br</span><span style="color:#117700">/><</span><span style="color:#117700">br</span><span style="color:#117700">/></span>
  47. <span style="color:#117700"><</span><span style="color:#117700">img</span> <span style="color:#0000cc">src</span>=<span style="color:#aa1111">"img/password.png"</span><span style="color:#117700">><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"password"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"password"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"</span><%<span style="color:#981a1a">=</span><span style="color:#000000">password</span>%><span style="color:#aa1111">"</span><span style="color:#117700">/><</span><span style="color:#117700">br</span><span style="color:#117700">/><</span><span style="color:#117700">br</span><span style="color:#117700">/></span>
  48. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"checkbox"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"rememberMe"</span> <span style="color:#0000cc">checked</span>=<span style="color:#aa1111">"</span><%<span style="color:#981a1a">=</span><span style="color:#000000">checked</span>%><span style="color:#aa1111">"</span><span style="color:#117700">/></span>记住我
  49. <span style="color:#117700"><</span><span style="color:#117700">input</span> <span style="color:#0000cc">type</span>=<span style="color:#aa1111">"submit"</span> <span style="color:#0000cc">name</span>=<span style="color:#aa1111">"login"</span> <span style="color:#0000cc">value</span>=<span style="color:#aa1111">"登录"</span><span style="color:#117700">/></span>
  50. <span style="color:#117700"></</span><span style="color:#117700">form</span><span style="color:#117700">></span>
  51. <span style="color:#117700"></</span><span style="color:#117700">div</span><span style="color:#117700">></span>
  52. <span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  53. <span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span></span>

process.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#770088">import</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java.net.URLEncoder"</span> %>
  2. <%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  3. <%
  4. <span style="color:#aa5500">// 获取输入用户名文本框的值</span>
  5. <span style="color:#008855">String</span> <span style="color:#000000">username</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"username"</span>);
  6. <span style="color:#aa5500">// 获取输入密码的密码框的值</span>
  7. <span style="color:#008855">String</span> <span style="color:#000000">password</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"password"</span>);
  8. <span style="color:#aa5500">// 在这里进行用户名和密码匹配,在这里是将用户名和密码规定死了的。</span>
  9. <span style="color:#aa5500">// 即用户名必须是"hello",密码必须是"world"才能登录成功</span>
  10. <span style="color:#770088">if</span> (<span style="color:#000000">username</span>.<span style="color:#000000">equals</span>(<span style="color:#aa1111">"admin"</span>) <span style="color:#981a1a">&&</span> <span style="color:#000000">password</span>.<span style="color:#000000">equals</span>(<span style="color:#aa1111">"123456"</span>)) {<span style="color:#aa5500">// 如果用户名和密码都正确</span>
  11. <span style="color:#aa5500">// 新建名为name的Cookie</span>
  12. <span style="color:#000000">Cookie</span> <span style="color:#000000">usernameCookie</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Cookie</span>(<span style="color:#aa1111">"username"</span>, <span style="color:#000000">URLEncoder</span>.<span style="color:#000000">encode</span>(<span style="color:#000000">username</span>, <span style="color:#aa1111">"utf-8"</span>));
  13. <span style="color:#aa5500">// 新建名为password的Cookie</span>
  14. <span style="color:#000000">Cookie</span> <span style="color:#000000">passwordCookie</span> <span style="color:#981a1a">=</span> <span style="color:#770088">new</span> <span style="color:#000000">Cookie</span>(<span style="color:#aa1111">"password"</span>, <span style="color:#000000">password</span>);
  15. <span style="color:#aa5500">// 获取是否保存Cookie</span>
  16. <span style="color:#008855">String</span> <span style="color:#000000">rememberme</span> <span style="color:#981a1a">=</span> <span style="color:#000000">request</span>.<span style="color:#000000">getParameter</span>(<span style="color:#aa1111">"rememberMe"</span>);
  17. <span style="color:#aa5500">// 判断复选框是否被选中,如果选中则返回on</span>
  18. <span style="color:#770088">if</span> (<span style="color:#000000">rememberme</span>.<span style="color:#000000">equals</span>(<span style="color:#aa1111">"on"</span>)) {
  19. <span style="color:#aa5500">// 设置保存Cookie的时间长度,单位为秒</span>
  20. <span style="color:#000000">usernameCookie</span>.<span style="color:#000000">setMaxAge</span>(<span style="color:#116644">7</span> <span style="color:#981a1a">*</span> <span style="color:#116644">24</span> <span style="color:#981a1a">*</span> <span style="color:#116644">60</span> <span style="color:#981a1a">*</span> <span style="color:#116644">60</span>);
  21. <span style="color:#000000">passwordCookie</span>.<span style="color:#000000">setMaxAge</span>(<span style="color:#116644">7</span> <span style="color:#981a1a">*</span> <span style="color:#116644">24</span> <span style="color:#981a1a">*</span> <span style="color:#116644">60</span> <span style="color:#981a1a">*</span> <span style="color:#116644">60</span>);
  22. } <span style="color:#770088">else</span> {
  23. <span style="color:#aa5500">// 设置将不保存Cookie</span>
  24. <span style="color:#000000">usernameCookie</span>.<span style="color:#000000">setMaxAge</span>(<span style="color:#116644">0</span>);
  25. <span style="color:#000000">passwordCookie</span>.<span style="color:#000000">setMaxAge</span>(<span style="color:#116644">0</span>);
  26. }
  27. <span style="color:#aa5500">// 输出到客户端</span>
  28. <span style="color:#000000">response</span>.<span style="color:#000000">addCookie</span>(<span style="color:#000000">nameCookie</span>);
  29. <span style="color:#000000">response</span>.<span style="color:#000000">addCookie</span>(<span style="color:#000000">passwordCookie</span>);
  30. <span style="color:#aa5500">// 登录成功后跳转到success.jsp</span>
  31. <span style="color:#000000">request</span>.<span style="color:#000000">getRequestDispatcher</span>(<span style="color:#aa1111">"success.jsp"</span>).<span style="color:#000000">forward</span>(<span style="color:#000000">request</span>, <span style="color:#000000">response</span>);
  32. } <span style="color:#770088">else</span> {<span style="color:#aa5500">// 如果用户名和密码都不正确</span>
  33. <span style="color:#aa5500">// 保存错误提示数据</span>
  34. <span style="color:#000000">session</span>.<span style="color:#000000">setAttribute</span>(<span style="color:#aa1111">"error"</span>, <span style="color:#aa1111">"用户名或密码不正确"</span>);
  35. <span style="color:#aa5500">// 登录失败后将跳转到error.jsp</span>
  36. <span style="color:#000000">request</span>.<span style="color:#000000">getRequestDispatcher</span>(<span style="color:#aa1111">"error.jsp"</span>).<span style="color:#000000">forward</span>(<span style="color:#000000">request</span>, <span style="color:#000000">response</span>);
  37. }
  38. %></span></span>

success.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  2. <span style="color:#117700"><</span><span style="color:#117700">html</span><span style="color:#117700">></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  4. <span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>登录成功<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
  5. <span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  6. <span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  7. <span style="color:#117700"><</span><span style="color:#117700">h1</span><span style="color:#117700">></span>恭喜你,登录成功!<span style="color:#117700"></</span><span style="color:#117700">h1</span><span style="color:#117700">></span>
  8. <span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  9. <span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span></span>

error.jsp

  1. <span style="background-color:#f8f8f8"><span style="color:#333333"><%<span style="color:#555555">@</span> <span style="color:#000000">page</span> <span style="color:#000000">contentType</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"text/html;charset=UTF-8"</span> <span style="color:#000000">language</span><span style="color:#981a1a">=</span><span style="color:#aa1111">"java"</span> %>
  2. <span style="color:#117700"><</span><span style="color:#117700">html</span><span style="color:#117700">></span>
  3. <span style="color:#117700"><</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  4. <span style="color:#117700"><</span><span style="color:#117700">title</span><span style="color:#117700">></span>登录失败<span style="color:#117700"></</span><span style="color:#117700">title</span><span style="color:#117700">></span>
  5. <span style="color:#117700"></</span><span style="color:#117700">head</span><span style="color:#117700">></span>
  6. <span style="color:#117700"><</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  7. <span style="color:#117700"><</span><span style="color:#117700">h1</span> <span style="color:#0000cc">style</span>=<span style="color:#aa1111">"color: red"</span><span style="color:#117700">></span>Error:<%<span style="color:#981a1a">=</span><span style="color:#000000">session</span>.<span style="color:#000000">getAttribute</span>(<span style="color:#aa1111">"error"</span>)%><span style="color:#117700"></</span><span style="color:#117700">h1</span><span style="color:#117700">></span>
  8. <span style="color:#117700"></</span><span style="color:#117700">body</span><span style="color:#117700">></span>
  9. <span style="color:#117700"></</span><span style="color:#117700">html</span><span style="color:#117700">></span></span></span>

发表评论

表情:
评论列表 (有 0 条评论,134人围观)

还没有评论,来说两句吧...

相关阅读