Java学习中,对登陆的总结。
来源:互联网 发布:手机淘宝如何上传视频 编辑:程序博客网 时间:2024/06/10 05:51
在浏览器上登录到学生系统,实现记住用户和密码,再一次的登录时,可以不用输入,自动的登录。
实现这个用到了,Filter过滤器,使用Filter时会需要对配置文件做配置。Cookie一次会话的记录账户和密码的东西。
首先,登录页面login.jsp
因为需要提交数据,交给后台处理操作,所以使用了form表单。
Form表单的action=”/StuMan/LoginServlet”是登录时提交的数据的给的服务器,服务器LoginServlet对数据进行获取和响应的处理操作,LoginServlet前的是项目工程名。Method=”post”是提交的时的保密方式提交。
自动登录的输入标签需要注意:
<input type=”checkbox” name=”auto” value=”auto”/>自动登录<br/>
需要注意,Loginservlet在通过request.getParameter(“auto”)这括号里的auto要和<imput>里的name=”auto”一样。
其次,是LoginServlet,创建这个类是用fileàNewàservlet。
//设置浏览器请求的信息编码
request.setCharacterEncoding("utf-8");
//设置服务器响应给浏览器的信息编码
response.setContentType("text/html;charset=utf-8");
//获取login.jsp的form提交的信息
Stringname =request.getParameter("studentName");
Stringpassword =request.getParameter("password");
Stringauto =request.getParameter("auto");
//将获得的request数据放到cookie
Cookiecookie =new Cookie("student",name+"&"+password);
cookie.setPath(request.getContextPath());
//获取数据库的学生名和密码.
StudentDaostuDaoImp=new StudentDaoImp();
Studentstu=stuDaoImp.findOne(name,password);
注:New Cookie(key,value); value是值,name和password作为值存放给cookie对象,key是键,这个名字可以自己任取,可看作对值个一个标识统称。当要取出值时,就可以通过key来得到相应的value
Cookie[] cookie=request.getCookies();是得到多个的cookie的key用数组存放,然后在遍历去得值。
得到数据库里的学生和密码,用来和在浏览器上得到的学生名和密码,相比较判断,如果用户在浏览器上输入的信息在数据库是存在的,就可以登录,否则不可以登录。
if(auto!=null) {
cookie.setMaxAge(60);
}else {
cookie.setMaxAge(0);
}
response.addCookie(cookie);
判断auto是否有值,有的话设置cookie对象保存的时间60秒,否则立即销毁。addCookie(cookie);将登录成功,将用户名,密码给cookie添加保存。
//判断获得的表单内容
intflag=0;//标志,使用标志为后面的选择switch做准备
if(stu!=null) {
flag=0;
}else {
flag=1;
}
//对上面登录时情况的处理
switch(flag){
case 0: request.getSession().setAttribute("stuName",name);
response.sendRedirect(request.getContextPath()+"/loginSuccess.jsp");
break;
case 1:
//提示账户和密码错误,3秒后返回到登陆
response.getWriter().write("账户和密码输入错误3秒后跳回到登陆页面");
response.setHeader("refresh","3;url=/StuMan/login.jsp");
break;
}
再是,过滤器的使用,创建àfileàNewàFilteràLoginFilter过滤器就可创建了。
要使用过滤器还得在web.xml配置它。
web.xml配置
<filter>
<filter-name>auto</filter-name>
<filter-class>com.filter.servlet.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>auto</filter-name>
<url-pattern>/login.jsp</url-pattern>
</filter-mapping>
注:<filter-name>上下两个需要一样。
<filter-class>是LoginFilter在项目下的路径。
<url-pattern>是需要过滤的页面。注意login.jsp前有/。
b.LoginFilter
publicvoid doFilter(ServletRequestarg0, ServletResponsearg1, FilterChainchain)throws IOException, ServletException {
HttpServletRequestrequest =(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
Cookie[]cookie=request.getCookies();
if(cookie!=null) {
for (Cookiecookie2 :cookie) {
Stringname=cookie2.getName();
//判断之前存的student的名和这次获得的name值是否一样。一样就进一步的获取cookie的value值,否则,就拦截,让他去先登录。
if("student".equals(name)) {
Stringvalue=cookie2.getValue();
//因有多个值,所以用数组存放,按之前和多个用户值的“&”的连接,现在就以”&”分割。
String[]arr=value.split("&");
//获取数据库的学生名和密码.
StudentDaostuDaoImp=new StudentDaoImp();
//根据得到的学生名和密码去数据库查学生是否存在。不存在就拦截,让他去登录页面登陆。
Studentstu=stuDaoImp.findOne(arr[0],arr[1]);
//判断学生名字和密码是否正确
if(stu!=null) {
//将名字存放在共享域,方便其他地方用到。 request.getSession().setAttribute("stuName",arr[0]);
// request.getSession().setAttribute("password", arg1);
//放行登录页面login.jsp直接重定向到了成功登陆的页面loginSuccess.jsp。 response.sendRedirect(request.getContextPath()+"/loginSuccess.jsp");
}else {
chain.doFilter(arg0,arg1);
}
}else {
chain.doFilter(arg0,arg1);
}
}
}else {
chain.doFilter(arg0,arg1);
}
}
注:HttpServletRequestrequest =(HttpServletRequest) arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
强制转化类型。
Cookie[]cookie=request.getCookies();
获取这次的cookie
- Java学习中,对登陆的总结。
- 对JAVA学习的一次小小总结
- 对java学习方向的总结!
- 对Java 中Swing的小总结
- 对java中异常的学习
- 对Java中修饰符的学习
- 对java的总结
- 在J2EE开发中对事务的学习总结
- 对Java中的枚举类型的学习总结
- 对之前java SE入门学习的总结
- 对Java中的枚举类型的学习总结
- 对java中static变量和方法的总结
- 黑马程序员 对java中 数据类型大小的总结
- JAVA中对字符串的相关操作总结
- 黑马程序员+对Java中网络编程的总结
- 黑马程序员+对Java中图形化界面的总结
- 黑马程序员+对Java中反射技术的总结
- 黑马程序员+对Java中面向对象的总结
- 使用ffmpeg的lib库解码H264/H265
- 用feof()判断文件时出现多读内容的问题
- ES6解构和扩展运算符
- 基于Nginx的负载均衡网站架构
- [转]moveToThread
- Java学习中,对登陆的总结。
- (转载)maven搭建ssm分模块框架 (myeclipse版) (二) 较详细版
- JNI开发
- 通过acpi_device_hid 得到device的HID
- BZOJ 4140: 共点圆加强版 [二进制分组]
- Java:接口与抽象类
- Mathematica SPWM
- Qt namespace Ui 使用
- 注解和反射结合使用例子