要求使用springMCV整合web开发,实现自定义路径登入到页面,实现页面上显示考生姓名,需提供MyInterceptor类与MyMvcConfig类代码
时间: 2023-12-09 15:03:07 浏览: 26
下面是一个简单的示例代码,可以作为参考:
MyInterceptor.java
```java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 {
// 在请求处理之前进行调用(Controller方法调用之前)
String name = request.getParameter("name");
if (name == null || name.isEmpty()) {
response.sendRedirect("/login"); // 重定向到登入页面
return false;
}
request.setAttribute("name", name); // 将姓名放入request中
return true; // 只有返回true才会继续向下执行,返回false取消当前请求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整个请求结束之后被调用,也就是DispatcherServlet渲染了视图后执行(主要是用于进行资源清理工作)
}
}
```
MyMvcConfig.java
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/exam/**"); // 对以/exam开头的路径进行拦截
}
}
```
在上述代码中,MyInterceptor类实现了HandlerInterceptor接口,其中preHandle方法在请求处理之前进行调用,可以在此处对请求进行拦截处理,并在请求对象中添加一些属性。MyMvcConfig类使用@Configuration注解表示这是一个配置类,继承了WebMvcConfigurer接口,可以通过addInterceptors方法添加拦截器。在本例中,我们添加了MyInterceptor拦截器,并指定拦截以/exam开头的路径。这样,当用户访问以/exam开头的页面时,都会被MyInterceptor拦截器拦截,进行姓名的校验和保存。