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="../main?main_id=345">mmmmmmmmmm</a><br>

<a href="../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="jsp/cat.jsp">注册</a>

 


</body>
</html>

 

 

 登录展示

 

2016-11-21 16:20:18

posted @ 2016-11-21 16:22  倾世【天意】  阅读(1050)  评论(0编辑  收藏  举报