Serevlet基础

来源:互联网 发布:洗衣机知乎 编辑:程序博客网 时间:2024/06/04 20:06

感觉对Servlet的最基本的东东还不是特别了解,下面简单复习一下。

第一个jsp:index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>index.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache">  </head>  <body>   <form action="Login" method="post">   name:<input type="text" name="userName">   <br>   password:<input type="password" name="userPassword">   <br>   <input type="submit" value="submit"/>   </form>  </body></html>
一个Servlet:

package com.test.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;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;public class Login extends HttpServlet {private static final long serialVersionUID = 3388966044136481743L;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");response.setCharacterEncoding("UTF-8");response.setHeader("cache-control", "no-cache");response.setHeader("pragma","no-cache");String userName = request.getParameter("userName");String userPassword = request.getParameter("userPassword");if(null == userName || "".equals(userName = userName.trim())){out.println("UserName can't be null!");return;}if(null == userPassword){out.println("UserPassword can't be null!");return;}System.out.println("userName : " + userName + "\tpassword : " + userPassword);request.setAttribute("userName", userName);HttpSession session = request.getSession();session.setMaxInactiveInterval(120);session.setAttribute("userName", userName);Cookie cookie = new Cookie("userName",userName);//Cookie是new出来的cookie.setMaxAge(120);response.addCookie(cookie);//要记得把它加到response中ServletContext application = this.getServletContext();//application是这样出来的application.setAttribute("userName", userName);request.getRequestDispatcher("res.jsp").forward(request, response);//如果上面的一行改为分别用下面这两个,会是什么效果呢?//response.sendRedirect("res.jsp");//application.getRequestDispatcher("/res.jsp").forward(request, response);}}
配置Servlet:

  <servlet-mapping>    <servlet-name>Login</servlet-name>    <url-pattern>/Login</url-pattern>  </servlet-mapping>

第二个jsp:res.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>    <base href="<%=basePath%>">    <title>res.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"></head>  <%  String userName = (String)request.getAttribute("userName");String userName2 = (String)session.getAttribute("userName");String userName3 = null;String userName4 = (String)application.getAttribute("userName");Cookie[] cookies = request.getCookies();if(null != cookies && cookies.length > 0){for(Cookie cookie : cookies){//System.out.println("cookie name : " + cookie.getName() + "\tcookie value : " + cookie.getValue());if("userName".equals(cookie.getName()))userName3 = cookie.getValue();}}  %>  <body>  <%=path%>  <br>  <%=basePath%>  <br>  注意一下上面的东东<br>  测试的时候可以在浏览器中另开一个关于这个jsp的tab  <hr>    I'm from request.getAttribute : <%=userName%>   <br>   I'm from session.getAttribute : <%=userName2%>   再弄一个页面,在session不超时的情况下,也是能取到的。   <br>   I'm from cookie.getValue : <%=userName3%>   再弄一个页面,在cookie不超时的情况下,即使在这个时间段内重启了服务器,也是能取到的。   <br>   I'm from application.getAttribute : <%=userName4%>   在启动一个新的其他浏览器,也是能访问到的。  </body></html>

原创粉丝点击