您的位置:首页 > 其它

servlet实现自动登录,并显示保存的用户信息

2016-04-08 23:07 881 查看
首页—>登录成功—>显示

①首页:

<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: