UserDao.java从数据库中查询用户名与密码
//登录
public User login(User user) throws SQLException {
QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select from user where username = ? and password = ?";
return qr.query(sql, new BeanHandler(User.class),user.getUsername(),user.getPassword());
}
UserService.java
public User login(User user){
try {
return ud.login(user);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
UserServlet.java实现登录功能
//登录
public void login(HttpServletRequest request,
HttpServletResponse response) throws IOException, IllegalAccessException, InvocationTargetException, ServletException{
Map map = request.getParameterMap();
User user = new User();
BeanUtils.populate(user,map);
if (map.get("autoLogin")!=null){
cookie username = new cookie("username", map.get("username")[0]);
username.setMaxAge(6060);
cookie password = new cookie("password", map.get("password")[0]);
password.setMaxAge(60*60);
response.addcookie(username);
response.addcookie(password);
}
user = us.login(user);
if (user != null){
request.getSession().setAttribute("user", user);
response.sendRedirect("/ShopStore/default.jsp");
}
else{
request.setAttribute("message", "用户或密码错误!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
工具类:AutoLoginFilter.java用来实现自动登录
package com.yinhe.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.yinhe.bean.User;
import com.yinhe.service.UserService;
public class AutoLoginFilter implements Filter{br/>@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse resp = (HttpServletResponse)response;
//是否已登录
if (req.getSession().getAttribute("user") == null){//如果已登录,则啥都不干
//判断cookie中有没有账户密码
cookie[] cookies = req.getcookies();
if (cookies != null){
String username = "";
String userpass = "";
for (cookie cookie : cookies) {
if (cookie.getName().equals("username")){//找到感兴趣的cookie
username = cookie.getValue();
}
if (cookie.getName().equals("password")){//找到感兴趣的cookie
userpass = cookie.getValue();
}
}
UserService us = new UserService();
User user = new User();
user.setUsername(username);
user.setPassword(userpass);
if (us.login(user) != null){
req.getSession().setAttribute("user", user);
}
}
}
chain.doFilter(request, response);br/>}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stubbr/>}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
前台:login.jsp此单选框被选中下次访问即为自动登录
<%@ page contentType="text/html;charset=UTF-8" language="java" %>系统首页 #nav{ height: 88px; padding: 5px 200px; background-color: aquamarine; } #logo{ float: left; } #userinfo{ float: right; height: 50px; line-height: 80px; } #container{ background-color: aqua; height: 800px; margin: 2px 200px; font-size: xx-large; text-align: center; } <%-- 不推荐使用 <% String loginUser = (String) request.getAttribute("loginUser"); if (loginUser != null){ out.println(loginUser); }else { %> 登录/注册 <% } %> --%> <% String loginUser = (String) session.getAttribute("loginUser"); if (loginUser != null){ out.println(loginUser); out.println("退出"); }else { %> 登录/注册 <% } %>
主页内容
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔) login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %>登录 tr{ height:50px; } td{ text-align: center; } <% String msg = (String)request.getAttribute("msg"); %> <% if(msg != null){ out.print(msg); } %>
info.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>Title #nav{ height: 88px; padding: 5px 200px; background-color: aquamarine; } #logo{ float: left; } #userinfo{ float: right; height: 50px; line-height: 80px; } #container{ background-color: aqua; height: 800px; margin: 2px 200px; font-size: xx-large; text-align: center; } <% String loginUser = (String) session.getAttribute("loginUser"); if (loginUser != null){ out.println(loginUser); out.println("退出"); }else { %> 登录/注册 <% } %> 主页内容
Servlet02.java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;br/>@WebServlet("/myServlet02")
public class Servlet02 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//修改编码
request.setCharacterEncoding("utf-8");//请求过来的编码是亨达返佣www.kaifx.cn/broker/hantecglobal.htmlutf-8
response.setContentType("text/html;charset=utf-8");//响应出去的内容,为网页编码utf-8
//获取表单数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//验证
if("aaa".equals(username) && "123".equals(password)){
//跳转(请求转发 请求重定向)
//重定向:两次请求,不能在request作用域中共享数据。
//如果要在两次请求或多次请求之间,进行数据共享,需要用session
//使用session步骤
//获取session
HttpSession session = request.getSession();//如果存在已有的session,则直接返回,否则会创建一个新的,返回。
//HttpSession session = request.getSession(true);//同上
//HttpSession session = request.getSession(false);//如果存在已有的session,则直接返回,否则返回null。
//在session的作用域保存数据,供后续请求使用
session.setAttribute("loginUser",username);
response.sendRedirect("index.jsp");
/ 多个页面不推荐使用请求转发
request.setAttribute("loginUser",username);
request.getRequestDispatcher("index.jsp").forward(request,response);
/
}else {
//转发:一次请求,可以在request作用域中,共享数据
request.setAttribute("msg","");
// response.sendRedirect("login.jsp");
request.getRequestDispatcher("login.jsp").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
LogoutServlet.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;br/>@WebServlet("/logoutServlet")
public class LogoutServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//退出系统
//获取session
HttpSession session = request.getSession();
//删除session
session.removeAttribute("loginUser");
//跳转到登录页面/首页
response.sendRedirect("index.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
web.xml
index.jsp
总结
以上所述是小编给大家介绍的使用Java servlet实现自动登录退出功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!



