首页 > 代码库 > springmvc中基于注解的登录
springmvc中基于注解的登录
配置已经在前一个随笔中提到,下面直接写类。
首先通过数据库反射javabean文件User.java
package com.hpe.bean; // Generated 2016-11-18 11:06:39 by Hibernate Tools 3.5.0.Final import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.Table; /** * User generated by hbm2java */ @Entity @Table(name = "user", catalog = "java4") public class User implements java.io.Serializable { private Integer id; private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "id", unique = true, nullable = false) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name = "username") public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } @Column(name = "password") public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
然后是dao层LoginDao.java
package com.hpe.dao; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.hpe.bean.User; @Repository public class LoginDao { @Autowired private SessionFactory sf; public int getUser(User user){ String hql="select count(u) from User u where u.username=? and u.password=?"; //获取session对象 Session session =sf.openSession(); Query query=session.createQuery(hql); query.setString(0, user.getUsername()); query.setString(1, user.getPassword()); Number num=(Number) query.uniqueResult(); return num.intValue(); } }
接着service层LoginService.java
package com.hpe.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hpe.bean.User; import com.hpe.dao.LoginDao; @Service public class LoginService { @Autowired private LoginDao ld; public boolean loginService(User user){ int i=ld.getUser(user); if(i>0){ return true; } return false; } }
在中间我写了一个过滤器和拦截器
LoginFilter.java
package com.hpe.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.filter.OncePerRequestFilter; public class LoginFilter extends OncePerRequestFilter{ @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterchain) throws ServletException, IOException { //获取当前请求路径 String file = request.getRequestURI(); if(file.indexOf("login.jsp")!=-1){ filterchain.doFilter(request, response); return; } //去session里面取值 String username = (String) request.getSession().getAttribute("username"); if(null!=username&&!"".equals(username)){ filterchain.doFilter(request, response); return; } } }
LoginInterceptor.java
package com.hpe.interceptor; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class LoginInterceptor implements HandlerInterceptor{ private List<String> nofilePath; public void setNofilePath(List<String> nofilePath) { this.nofilePath = nofilePath; } @Override public void afterCompletion(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object obj, Exception exception) throws Exception { System.out.println("afterCompletion方法开始执行"); } @Override public void postHandle(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object obj, ModelAndView modelandview) throws Exception { System.out.println("postHandle开始执行"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse httpservletresponse, Object obj) throws Exception { System.out.println("preHandle开始执行"); //不拦截的请求 String file= request.getRequestURI(); for(String path:nofilePath){ if(file.indexOf(path)!=-1){ return true; } } //去session里面找username String username = (String) request.getSession().getAttribute("username"); if(null!=username&&!"".equals(username)){ return true; } return false; } }
最后是LoginContorller.java
package com.hpe.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.hpe.bean.User; import com.hpe.service.LoginService; @Controller public class LoginContorller { @Autowired private LoginService ls; @Autowired private HttpSession httpSession; @RequestMapping(value="/login",method=RequestMethod.POST) public String login(User user){ boolean b=ls.loginService(user); if(b){ httpSession.setAttribute("username", user.getUsername()); return "forward:jsp/main.jsp"; } return "login"; } @RequestMapping("/main") public ModelAndView main(@RequestParam("main_id") String main_id){ System.out.println(main_id); ModelAndView mav = new ModelAndView(); mav.setViewName("main"); mav.addObject("mess","你好世界"); return mav; } //rest风格参数传递 @RequestMapping("/test/{id}/{idw}/{id2}") public void test(@PathVariable("id") String id,@PathVariable("idw") String idw,@PathVariable("id2")String id2, HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ System.out.println(id); System.out.println(idw); System.out.println(id2); //response.sendRedirect("../jsp/main.jsp"); } }
前台界面
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>欢迎访问登录页面</title> </head> <body> <%=request.getContextPath() %> <form action="<%=request.getContextPath() %>/login " method="post"> 用户名:<input type="text" name="username"/> 密码:<input type="password" name="password"> <input type="submit"/> </form> <a href="http://www.mamicode.com/main?main_id=345">mmmmmmmmmm</a><br> <a href="http://www.mamicode.com/test/123/www/uuu">tttttttttt</a> </body> </html>
main.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> 欢迎访问我的首页 <a href="http://www.mamicode.com/jsp/cat.jsp">注册</a> </body> </html>
登录展示
2016-11-21 16:20:18
springmvc中基于注解的登录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。