JSP中response.setHeader中refresh用法

本文介绍如何通过设置 HTTP 响应头中的 'refresh' 参数来实现页面自动刷新及跳转功能。详细解释了 'refresh' 的两种使用场景:一是仅用于刷新页面,二是用于页面跳转并可附带参数。

实现刷新页面次数用法为  response.setHeader("refresh","刷新时间间隔");

实现目的页面跳转用法为 response.setHeader("refresh","刷新时间间隔;目的页面地址");

refresh是使用get方式跳转,url中可以携带参数和数据,比如response.setHeader("refresh","刷新时间间隔;目的页面地址?xx=");

同事refresh会刷新当前request请求,使得request.getAttribute的内容为null,如需使用可用Session方法获取。

现在要进行一个实验:实验二 Servlet进阶和JSP基础 一、实验目的 (1)掌握Servlet处理session以及Cookie的方法。 (2)掌握JSP的编写方法。 (3)掌握JSP中变量、表达式的使用。 二、 实验环境和要求 (1)使用Eclipse、Tomcat以及浏览器等作为实验环境。 (2)实验前应做好设计规划,充分准备,对各个问题预先编制程序。 (3)在实验中遇到困难时运用多种手段解决问题。 三、 实验内容 (1) 使用表单提交的方式交给Servlet处理,完成用户登录以及退出操作,并利用会话和Cookie实现自动登录功能。我创建了一个login.jsp,代码为:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String username = ""; String password = ""; Cookie[] cookies = request.getCookies(); if(cookies!= null){ String userinfo = null; for(int i=0;i<cookies.length;i++){ if(cookies[i].getName( ).equals("userinfo")){ userinfo= cookies[i].getValue(); break; } } if(userinfo!=null){ String[ ] information = userinfo. split("\\|" ); username=information[0]; password= information[1]; } } %> <form action = "LoginServlet" method="post"> 用户名:<input type = "text" name = "username" value = <%= username %>> <br> 密   码: <input type = "password" name = "password" value = <%= password %>><br> <input type = "submit" value = "登录"><input type = "reset" value = "重置"> </form> </body> </html>,又创建了一个LoginServlet,代码为:package com.test.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class LoginServlet */ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-type","text/plain;charset = UTF -8" ); String username = request.getParameter("username"); String password= request.getParameter("password" ); if(username!=null&&password!= null) { if(username.equals(password)) { HttpSession session = request.getSession(); session.setAttribute("username", username); Cookie userinfocookie = new Cookie("userinfo" ,username + "|"+ password); userinfocookie.setMaxAge(60*5); response.addCookie(userinfocookie); response.sendRedirect("welcome. jsp" ); }else { //跳转到欢迎页面 response.getWriter().append("用户名密码错误,请重新登录5 秒后回到登录页面……"); response.setHeader("Refresh","5;URL= login.jsp"); } }else { response.getWriter().append("禁止直接访问,5秒后回到登录页面……"); response.setHeader("Refresh","5;URL = login.jsp"); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } ,接着创建了一个welcome.jsp,代码为:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% response.setHeader("Pragma" ,"No - Cache" ); response.setHeader( "Cache - Control" , "No - Cache" ); response.setDateHeader("Expires",0); if(session!= null){ String username =(String)session.getAttribute("username"); if(username!=null) {out.print("欢迎您,"+ username + "<a href ='LogoutServlet'>安全退出</a>"); } else { out.print("你还没有登录,5秒后跳转到登录页面……"); response.setHeader("Refresh","5;URL=login.jsp"); } }else{ out.print("禁止直接访问,5秒后跳转到登录页面……"); response.setHeader("Refresh","5;URL=login.jsp"); } %> </body> </html>,最后创建了一个LogoutServlet,代码为:package com.test.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class LogoutServlet */ @WebServlet("/LogoutServlet") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LogoutServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setCharacterEncoding("UTF-8"); response.setHeader("Content- type" ,"text/plain;charset = UTF - 8" );//判断当前请求是否存在对象 HttpSession session =request.getSession(false); if(session!= null) { session.invalidate(); Cookie usernameinfo = new Cookie("userinfo" , "" ); usernameinfo.setMaxAge(0); response.addCookie(usernameinfo); response.getWriter().append("注销成功,5秒后跳转到登录页面……"); response. setHeader("Refresh", "5;URL, = login. jsp" ); }else{ response.getWriter().append("你还未登录,无须注销5秒后跳转到登录页面……"); response. setHeader(" Refresh", "5 ;URL = login. jsp" ); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } ,请问能完成这个实验的要求吗,如果不能请在我的代码上改动
最新发布
11-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值