servlet实现自动登录,并显示保存的用户信息
2016-04-08 23:07
881 查看
首页—>登录成功—>显示
①首页:
②处理登录:
③显示用户信息show:
④这一块暂时不知道用在哪里的,以后考虐后再补充:
⑤配置信息:
①首页:
<body> 用户登录<br> <form action="login" method="post"> 用户名:<input type="text" name="uname"><br> <input type="checkbox" name="save" value="y"> 一个月内自动登录<br> <input type="submit" value="提交"> </form> </body>
②处理登录:
package com.bright; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取表单中的数据的值 req.setCharacterEncoding("utf8"); String uname = req.getParameter("uname"); //用户名 String save = req.getParameter("save"); //获取“自动登录” //如果获取到的值和y一样 if("y".equals(save)){ //创建Cookie,将用户名存到叫username的cookie中 //Cookie 对象携带需要保存的数据,name=value,都是字符串类型 //每个cookie保存一个数据,如果需要多个,创建多个cookie对象 Cookie cookie = new Cookie("username", uname); //设置cookie存在时间 单位:秒 //cookie保存的时间,不管中途是否使用,访问cookie,到时就过期 //如果不设置,那么cookie在浏览器关闭的时候失效 cookie.setMaxAge(60*5); //将cookie发给浏览器(如果没有这句,cookie就不会发送给客户端) resp.addCookie(cookie); } resp.setContentType("text/html;charset=utf8"); PrintWriter out = resp.getWriter(); out.println("用户名:"+uname); out.println("<br/>已经存入Cookie,<a href='show'>点击查看</a>"); out.flush(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } }
③显示用户信息show:
package com.bright; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ShowCookieServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf8"); PrintWriter out = resp.getWriter(); //获取cookie的信息 //每次浏览器发送请求,都会将所有的cookie信息通过报头发送给服务器 Cookie[] cookies = req.getCookies(); String uname = ""; //遍历cookie数组,通过cookie的name,查找cookie的value if(cookies!=null && cookies.length>0){ for(int i=0;i<cookies.length;i++){ //如果cookie的名字和username一致,就获取cookie中的值 if("username".equals(cookies[i].getName())){ //将从cookie中获取到的值放在uname中 uname = cookies[i].getValue(); //删除掉cookie信息 //不能直接调用方法删除cookie,而是通过将cookie的时间设置为0来删除 cookies[i].setMaxAge(0); //发送给客户端 resp.addCookie(cookies[i]); } } if(uname.length()>0){ out.println("保存在Cookie中的用户名:"+uname); }else{ out.println("对不起,你要的cookie信息不存在!"); } }else{ out.println("对不起,你要的cookie信息不存在!"); } out.flush(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } }
④这一块暂时不知道用在哪里的,以后考虐后再补充:
package com.bright; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FormServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //如果用户保存了cookie,那么自动登录,否则显示form表单 Cookie[] cookies = req.getCookies(); String uname = ""; //遍历cookie数组,通过cookie的name,查找cookie的value if(cookies!=null && cookies.length>0){ for(int i=0;i<cookies.length;i++){ if("username".equals(cookies[i].getName())){ uname = cookies[i].getValue(); //删除掉cookie信息 //不能直接调用方法删除cookie,而是通过将cookie的时间设置为0来删除 cookies[i].setMaxAge(0); //发送给客户端 resp.addCookie(cookies[i]); } } } if(uname.length()>0){ //自动登录 resp.sendRedirect("login?uname="+uname); }else{ //显示表单 resp.setContentType("text/html;charset=utf8"); PrintWriter out = resp.getWriter(); out.println(" 用户登录<br>"); out.println("<form action='login' method='post'>"); out.println("用户名:<input type='text' name='uname' value='"+uname+"'><br>"); out.println("<input type='checkbox' name='save' value='y'> 一个月内自动登录<br>"); out.println("<input type='submit' value='提交'>"); out.println("</form>"); out.flush(); out.close(); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } }
⑤配置信息:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.bright.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>ShowCookieServlet</servlet-name> <servlet-class>com.bright.ShowCookieServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowCookieServlet</servlet-name> <url-pattern>/show</url-pattern> </servlet-mapping> <servlet> <servlet-name>FormServlet</servlet-name> <servlet-class>com.bright.FormServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FormServlet</servlet-name> <url-pattern>/form</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>form</welcome-file> </welcome-file-list> </web-app>
相关文章推荐
- LTE-TDD资源调度(2)-PBR、BSD和令牌桶设计
- 致自己
- 结对编程过程总结
- 结对
- 第三百七十一天 how can I 坚持
- 悲观锁和乐观锁
- The puzzle of eggs and floors
- URAL 1998 The old Padawan 二分
- STL学习系列六:List容器
- windows下gettext使用安装
- Android自定义View之圆形进度条
- Mac 安装 Homebrew
- Frameworks.Entity.Core 6 Specification
- 文件操作的主要接口API
- windows下flex安装使用
- “耐撕”团队 2016.04.08 站立会议
- iOS学习笔记11-多线程入门
- Marza Gift for GDC 2016
- Linux下crontab命令的用法
- 使用VS 2012调试PostgrelSQL