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;
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)); } }
Sign in to make a reply
净净一隅
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));
}
}