Web小项目的显示分页和过滤器的简单实现
这里在原本的基础上修改了login()和findAllUser()的方法并加入了一个新的实体类用来储存原本的userlist以及新需要的页面信息
package controller;
import bean.PageInfo;
import bean.User;
import dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import service.IUserService;
import javax.servlet.http.HttpSession;
import javax.ws.rs.DefaultValue;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@Autowired
private UserDao userDao;
@RequestMapping("/login.do")
public ModelAndView login(User user, HttpSession session){
boolean flag=userService.login(user.getUsername(),user.getPassword());
ModelAndView modelAndView=new ModelAndView();
if (flag){
session.setAttribute("user",user);
// List userList=userDao.findAllUser();
// modelAndView.addObject("userlist",userList);
modelAndView.setViewName("main");
}else {
modelAndView.setViewName("../failer");
}
return modelAndView;
}
@RequestMapping("/findAllUser.do")
public ModelAndView findAllUser(@RequestParam (defaultValue="1")int currentPage){
PageInfo<User> pageInfo=userService.findAllUser(currentPage);
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("pageInfo",pageInfo);
modelAndView.setViewName("user-list");
return modelAndView;
}
}
这里是改写了findAllUser()的方法用于处理传来的页面信息,再将该方法在UserController()调用将封装的数据反馈给页面处理。
package service.impl;
import bean.PageInfo;
import bean.User;
import dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.IUserService;
import java.util.List;
@Service
public class UserService implements IUserService {
@Autowired
private UserDao userDao;
@Override
public boolean login(String username, String password) {
User user=userDao.findUserByUsername(username);
if (user!=null&&user.getPassword().equals(password)){
return true;
}
return false;
}
@Override
public PageInfo<User> findAllUser(int currentPage) {
PageInfo<User> pageInfo=new PageInfo();
pageInfo.setSize(5);
int tc=userDao.getTotalCount();
pageInfo.setTotalCount(tc);
int tp=(int) Math.ceil(tc/5.0);
pageInfo.setTotalPage(tp);
if (currentPage<1){
pageInfo.setCurrentPage(1);
}else if (currentPage>tp){
pageInfo.setCurrentPage(tp);
}else{
pageInfo.setCurrentPage(currentPage);
}
int start=(pageInfo.getCurrentPage()-1)*5;
List<User> userlist =userDao.findAllUser(start);
pageInfo.setUserList(userlist);
return pageInfo;
}
@Override
public void deleteById(int id){
userDao.deleteById(id);
}
@Override
public void add(User user) { userDao.add(user); }
@Override
public User selectUserBydId(int id) {
return userDao.selectById(id);
}
@Override
public void update(User user){
userDao.update(user);
}
}
新建一个用于处理的Loginfilter类
package filter;
import bean.User;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class Loginfilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request= (HttpServletRequest) servletRequest;
HttpServletResponse response= (HttpServletResponse) servletResponse;
HttpSession session=request.getSession();
User user= (User) session.getAttribute("user");
String uri=request.getRequestURI();
if (user==null&&uri.indexOf("login.do")==-1){
response.sendRedirect(request.getContextPath()+"../login.jsp");
}else {
filterChain.doFilter(request,response);
}
}
@Override
public void destroy() {
}
}
这里是写了一个新的用于过滤.do的所有方法并在新类Loginfilter中进行处理的filter
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>filter.Loginfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>