java web实验三 mvc的应用

一、实验目的:
1、理解Servlet的工作原理;
2、掌握javabean在web程序中的应用;
3、掌握基于Servlet的MVC模式;
二、实验环境:
Eclipse
三、实验内容:

登录页面 这里没有勾选自动登录
在这里插入图片描述

IndexServlet页面
在这里插入图片描述

关闭浏览器重启eclipse
在这里插入图片描述

登录界面 勾选自动登录
在这里插入图片描述

IndexServlet界面 勾选了自动登录
在这里插入图片描述

关闭浏览器重启eclipse 显示登录界面
在这里插入图片描述
点击注销
在这里插入图片描述

源码
登录界面

<body>
 登录界面<br>
   <form action="LoginCheckServlet" method="post">
      <table>
         <tr>
         <th>用户登录</th>
         </tr>
         <tr>
           <td>用户名</td>
           <td><input type="text" name="user"  /></td>
         </tr>
         <tr>
           <td>密码</td>
           <td><input type="password" name="pwd"/></td>
          </tr>
          <tr>
            <td colspan="3" align="center"><input type="checkbox" name="autoLogin" value="Y">
                           自动登录&nbsp;
            <input type="submit" value="登录"/>
            &nbsp;
            <input type="reset"  value="重置" />
            </td>
         </tr>
      </table>
   </form>
</body>

LoginCheckServlet.java

protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
	    response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		request.setCharacterEncoding("utf-8");
		String username = request.getParameter("user");
		String pwd = request.getParameter("pwd"); 
		String autoLogin=request.getParameter("autoLogin");
		User user = new User();
		user.setUser(username);//赋值user类储存用户账户密码
		user.setPwd(pwd);
		UserCheck uc = new UserCheck();//调用UserCheck()验证账号密码
		if (uc.validate(user)) {
			request.getSession().setAttribute("user",user);
			//发送自动登录的cookie
			
			if("Y".equals(autoLogin)) {
			Cookie cookie=new Cookie("autoLogin",username+"-"+pwd);
			cookie.setMaxAge(60*60*24*15);
			cookie.setPath("/javaweb3");
			response.addCookie(cookie);
			}
			response.sendRedirect("IndexServlet");
			
		} else {
			out.println("用户名或者密码错误,3秒后跳转到登录界面");
			response.setHeader("refresh","3;Login.jsp");
			
		}
	}

IndexServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	response.setContentType("text/html;charset=utf-8");
	HttpSession session=request.getSession();
	User user=(User) session.getAttribute("user");
	PrintWriter out=response.getWriter();
	if(user==null) {
		out.print("您还没有登录"+"<br>");
		out.print("点击这里<a href='Login.jsp'>登录");
	}
	else {
		out.print("欢迎用户"+user.getUser()+"登录"+"<br>");
		out.print("点击这里<a href='Logout'>注销");
	   
	}
	}

AutoLoginFilter.java

public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request=(HttpServletRequest) req;
		Cookie[] cookies=request.getCookies();
		String autoLogin=null;
		for(int i=0;cookies!=null&&i<cookies.length;i++) {
			if("autoLogin".equals(cookies[i].getName())) {
				autoLogin=cookies[i].getValue();
				break;
			}
		}
		if(autoLogin!=null) {
			String[] parts=autoLogin.split("-");
			String username=parts[0];
			String pwd=parts[1];
			if("3182052051443".equals(username)&&("xc").equals(pwd)) {
				User user=new User();
				user.setUser(username);
				user.setPwd(pwd);
				request.getSession().setAttribute("user",user);
			}
		}
		
		chain.doFilter(request, response);
	}

LoginOut.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getSession().removeAttribute("user");
		Cookie cookie=new Cookie("autoLogin","msg");
		cookie.setPath(request.getContextPath());
		cookie.setMaxAge(0);
		response.addCookie(cookie);
		response.sendRedirect("IndexServlet");
		
	}
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页