使用jsp+servlet时,有些代码期待写在servlet中,而在jsp程序中尽量写页面代码,像在注册的时候,注册成功时要显示信息的时候,这些代码可以在jsp中通过Java代码显示,也可以在servlet中显示,可是使用servlet到jsp页面的跳转语句时,就不会显示servlet页面的内容啦,这时我们可以借助Response中的刷新头,使页面停留一些时间,然后调转到jsp页面,这样servlet中的内容也可以显示啦,看一下代码:
package com.you.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.you.bean.UserBean; import com.you.domain.Domain; public class RegisteServlet extends HttpServlet { private String name; private String word; private String sex; private String birth; private String email; private String address; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); UserBean userBean = new UserBean(); userBean.setUsername(request.getParameter("username")); userBean.setPassword(request.getParameter("userpassword")); userBean.setSex(request.getParameter("sex")); String year = request.getParameter("year"); String month = request.getParameter("month"); String day = request.getParameter("day"); userBean.setBirth(year + "年" + month + "月" + day + "日"); userBean.setEmail(request.getParameter("email")); userBean.setAddress(request.getParameter("address")); request.getSession().setAttribute("user", userBean); name = userBean.getUsername(); word = userBean.getPassword(); sex = userBean.getSex(); birth = userBean.getBirth(); email = userBean.getEmail(); address = userBean.getAddress(); Domain myDo = new Domain(); myDo.insert(name, word, sex, birth, email, address); PrintWriter out = response.getWriter(); out.print(name+"<br/>"); out.print(word+"<br/>"); out.print(sex+"<br/>"); out.print(birth+"<br/>"); out.print(email+"<br/>"); out.print(address); response.setHeader("refresh", "5;URL=http://localhost:8080/Login_5/register.jsp"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
浏览器实现缓存的话,这样不能实现信息的及时更新,可以通过禁止浏览器缓存头。看一下代码:
package com.you.servlet; import java.io.IOException; public class CacheTestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Prama", "no-cache"); PrintWriter out = response.getWriter(); out.println("本次响应的随机数为:" + Math.random()); out.println("<form action='NotServlet'" + "method='post'" +"第一个参数:<input type='text' name='p1'><br/>" + "第二个参数:<textarea name='p2'></textarea><br/>" + "<input type='submit' value='提交'>" + "</form>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
上面的三句都是禁止浏览器缓存的头,因为担心有些浏览器不识别,所以三种类型的都写上,这样就都会实现啦。