Discuss / Java / Filter

Filter

Topic source

净净一隅

#1 Created at ... [Delete] [Delete and Lock User]

web.xml

<web-app> <display-name>Archetype Created Web Application</display-name> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.filter.EncodingFilter</filter-class> </filter> <filter> <filter-name>LogFilter</filter-name> <filter-class>com.filter.LogFilter</filter-class> </filter> <filter> <filter-name>AuthFilter</filter-name> <filter-class>com.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/\*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>LogFilter</filter-name> <url-pattern>/\*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/user/\*</url-pattern> </filter-mapping> </web-app>

package com.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@WebFilter
public class LogFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("LogFilter: process"+((HttpServletRequest)servletRequest).getRequestURI());
filterChain.doFilter(servletRequest,servletResponse);
}
}

package com.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebFilter
public class EncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("设置编码:utf-8");
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
}

package com.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@WebFilter
public class LogFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("LogFilter: process"+((HttpServletRequest)servletRequest).getRequestURI());
filterChain.doFilter(servletRequest,servletResponse);
}
}

package com.controller;
import com.entity.School;
import com.entity.SignIn;
import com.entity.UserProfile;
import com.framework.ModelAndView;
import com.entity.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class UserController {
// 模拟一个数据库:
private Map<String, String> users = Map.of("bob", "bob123", "alice", "alice123", "tom", "tomcat");

@GetMapping("/signin")
public ModelAndView signin() {
ModelAndView mv=new ModelAndView("/signin.html");
return mv;
}

@PostMapping("/signin")
public ModelAndView doSignin(HttpServletRequest req,SignIn loginInfo) {
String expectPwd=users.get(loginInfo.getUsername());
if(!expectPwd.equals(loginInfo.getPassword())){
return null;
}
School school=new School("hua xi hospital","cd");
User user=new User(loginInfo.getUsername(),school,true);
req.getSession().setAttribute("user", user);
req.getSession().setMaxInactiveInterval(1000);
Map<String,Object> model=new HashMap<>();
model.put("user",user);
return new ModelAndView("/index.html",model);
}

@GetMapping("/signout")
public ModelAndView signout(HttpSession session) {
session.removeAttribute("user");
ModelAndView mv=new ModelAndView("/index.html");
return mv;
}

@GetMapping("/user/profile")
public ModelAndView profile(HttpServletResponse response, HttpSession session) throws IOException {
/*
User user = (User) session.getAttribute("user");
if (user == null) {
// 未登录,跳转到登录页:
return new ModelAndView("redirect:/signin");
}
if (!user.isManager()) {
// 权限不够,返回403:
response.sendError(403);
return null;
}*/
List<UserProfile> usersList=new ArrayList<>();
for(String key:this.users.keySet()){
UserProfile userProfile=new UserProfile(key,key+"_url");
usersList.add(userProfile);
}
return new ModelAndView("/profile.html", Map.of("users", usersList));
}
}


  • 1

Reply