Session的应用——三天免登录
1、使用Cookie实现的登录的不足:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection con=null;
login log= null;
String account=request.getParameter("username");//获得表单数据只在此Servlet起作用
String password=request.getParameter("password");
Cookie cookie=new Cookie(account,password);
cookie.setPath("/Servlet_login_war_exploded/cookie");
cookie.setMaxAge(**);
response.addCookie(cookie);
try {
con=C3p0Utils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from login where account=? and password=?";
Object[] select = {account,password};
log = qr.query(con, sql, new BeanHandler<login>((login.class)), select);
if(log!=null){
response.getWriter().write("nihao"+account);
}
else{
response.getWriter().write("wrong");
}
}
catch (SQLException e) {
throw new RuntimeException(e);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");//设置浏览器编码格式
response.getWriter().write("<html>");
response.getWriter().write("<head>");
response.getWriter().write("<title>");
response.getWriter().write("Login");
response.getWriter().write("</title>");
response.getWriter().write("</head>");
response.getWriter().write("<body bgcolor=\"aqua\">");
response.getWriter().write("<center>");
response.getWriter().write("<h3>");
response.getWriter().write("欢迎你"+request.getParameter("account"));
response.getWriter().write("</h3>");
response.getWriter().write("</center>");
response.getWriter().write("</body>");
}
使用Cookie虽然实现了三天免登陆的基础功能,但是,如果在用Cookie登录成功后需要重定向到另外一个Cookie时,request获取的值在重定向的Servlet中已经不再起作用了。访问的结果只能是空值。

2、使用Session的请求共享功能,实现在不同的Servlet跳转过程中依旧能够通过request获得用户信息。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");//设置浏览器编码格式
Cookie[] cookies=request.getCookies();
Connection con=null;
login log= null;
;
try {
con= C3p0Utils.getConnection();
QueryRunner qr = new QueryRunner();
String sql = "Select * from login";
List<login> list = qr.query(con, sql, new BeanListHandler<login>((login.class)));
if(cookies!=null) {//验证数据库中是否有与Cookie对应的用户
; i < list.size(); i++) {
log= list.get(i);
for (Cookie cookie : cookies) {
if((log.getAccount().equals(cookie.getName()))&&(log.getPassword().equals(cookie.getValue()))){
HttpSession httpSession=request.getSession();
httpSession.setAttribute("login",log);
successNum++;
}
}
}
){
response.sendRedirect("/Servlet_login_war_exploded/main");//重定向
}
else{
request.getRequestDispatcher("page").forward(request,response);
}
}
else{
request.getRequestDispatcher("page").forward(request,response);//请求转发
}
}
catch (SQLException e) {
throw new RuntimeException(e);
}
}
在通过Cookie登录成功后,创建了Session,对Session进行了赋值,而在重定向到MainServlet后,可以冲Session中获取值。虽然在不同的Servlet中,是不同的请求,但是依旧能够通过Session获取值。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
login log= (login) request.getSession().getAttribute("login");
response.setContentType("text/html; charset=utf-8");//设置浏览器编码格式
response.getWriter().write("<html>");
response.getWriter().write("<head>");
response.getWriter().write("<title>");
response.getWriter().write("Login");
response.getWriter().write("</title>");
response.getWriter().write("</head>");
response.getWriter().write("<body bgcolor=\"aqua\">");
response.getWriter().write("<center>");
response.getWriter().write("<h3>");
response.getWriter().write("欢迎你"+log.getAccount());
response.getWriter().write("</h3>");
response.getWriter().write("</center>");
response.getWriter().write("</body>");
}

Session的应用——三天免登录的更多相关文章
- ServletContext对象应用——三天免登录
1.用到的知识点: (1)Cookie (2)Session (3)ServletContext 其中Cookie和Session是会话技术的组成部分,一次会话从打开浏览器的某个站点开始,到浏览器关闭 ...
- Cookie的应用——Servlet实现三天免登录
1.工程结构: 2.Servlet的运用: (1)登录界面: protected void doGet(HttpServletRequest request, HttpServletResponse ...
- cookie之三天免登录代码
LoginCookie.java 1 package com.bjsxt.cookie; import java.io.IOException; import java.net.URLDecoder; ...
- [py][mx]django的cookie和session操作-7天免登录
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- Retrofit2.0 ,OkHttp3完美同步持久Cookie实现免登录(二)
原文出自csdn: http://blog.csdn.net/sk719887916/article/details/51700659: 通过对Retrofit2.0的<Retrofit 2.0 ...
- 火车采集器 帝国CMS7.2免登录发布模块
帝国cms7.2增加了金刚模式,登录发布有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 免登录直接获取栏目列表 通过文件内设置密码免登录发布数据 帝国cms7.2免登陆文章发布接口使用说 ...
- 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)
一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...
- Linux SSH免登录配置总结(转)
转载请出自出处:http://eksliang.iteye.com/blog/2187265 一.原理 我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器Serv ...
随机推荐
- 协议——SCCB与IIC的区别
SCCB(Serial Camera Control Bus,串行摄像头控制总线)是由OV(OmniVision的简称)公司定义和发展的三线式串行总线,该总线控制着摄像头大部分的功能,包括图像数据格式 ...
- spring boot 用@CONFIGURATIONPROPERTIES 和 @Configuration两种方法读取配置文件
spring cloud 读取 配置文件属性值 1.bean @Data public class LocalFileConfig { /** * 文件存储地址 */ private String ...
- go 学习笔记(3) 基础结构
package main import ( "fmt" ) const NAME string = "imooc" var a string = "慕 ...
- MVC-09安全
部分8:添加安全. MVC应用程序安全性 Models文件夹包含表示应用程序模型的类. Visual Web Developer自动创建AccountModels.cs文件,该文件包含用于应用程序认证 ...
- jquery easyui datagrid 在翻页以后仍能记录被选中的行及刷新设置选中行数据
//easyUI的datagrid在复选框多选时,如何在翻页以后仍能记录被选中的行://注意datagrid中需要配置idField属性,一般为数据的主键 $.ajax({ type: 'GET', ...
- 查看font字体文件
url: http://bluejamesbond.github.io/CharacterMap/ 打开网址后,如下图操作
- Python3 MySQL
首先安装pymysql pip install pymysql 准备数据库:创建一个数据库testdb mysql实例: import pymysql #打开数据库连接,使用数据库所在的IP127. ...
- PCL中将回调函数封装到类中
这是类中的声明 private://点云回调函数 NuClearTask_MyPointCloudHandle //点云选择 static void ps_callback(const pcl::vi ...
- cesium 检测视图改变的代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 【洛谷 P3193】 [HNOI2008]GT考试(KMP,dp,矩阵乘法)
题目链接 \(f[i][j]\)表示准考证号到第\(i\)位,不吉利数字匹配到第\(j\)位的方案数. 答案显然是\(\sum_{i=0}^{m-1}f[n][i]\) \(f[i][j]=\sum_ ...