要求使用springMCV整合web开发 ,实现自定义路径登入到页面,实现页面上显示考生姓名,需提供MyInterceptor类与MyMvcConfig类代码
时间: 2023-12-09 10:03:07 浏览: 80
以下是使用Spring MVC实现自定义路径登录并在页面上显示考生姓名的代码示例:
1. MyInterceptor类
```java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 获取session
HttpSession session = request.getSession();
// 判断是否已经登录
if (session.getAttribute("username") == null) {
// 未登录,重定向到登录页面
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
// 已登录,放行
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 在处理完请求后,可以对ModelAndView进行操作
if (modelAndView != null) {
// 设置考生姓名
modelAndView.addObject("username", request.getSession().getAttribute("username"));
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
// 在视图渲染完毕后,可以对请求和响应进行一些操作
}
}
```
2. MyMvcConfig类
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// 添加自定义路径映射
registry.addViewController("/login").setViewName("login");
registry.addViewController("/exam").setViewName("exam");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器,拦截所有请求,除了登录页面
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
}
}
```
在上面的代码中,我们通过MyMvcConfig类来实现自定义路径映射和添加拦截器。其中addViewControllers方法用于添加自定义路径映射,addInterceptors方法用于添加拦截器。
在MyInterceptor类中,我们实现了HandlerInterceptor接口,并重写了preHandle、postHandle和afterCompletion三个方法。preHandle方法用于拦截请求,在未登录时重定向到登录页面;postHandle方法用于在处理完请求后对ModelAndView进行操作,设置考生姓名;afterCompletion方法用于在视图渲染完毕后进行一些操作。
最后,我们需要在页面上显示考生姓名,可以通过在JSP页面中使用EL表达式${username}来获取考生姓名。
阅读全文