准备工作
1.导入json依赖
点击查看代码
<!-- jsp需要依赖! jstl-->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
2.声明配置类
点击查看代码
@Configuration
@ComponentScan("com.wind")
@EnableWebMvc
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class MvcConfig implements WebMvcConfigurer {
@Override //配置jsp对应的视图解析器
public void configureViewResolvers(ViewResolverRegistry registry) {
//快速 添加 网页 的 前后缀
registry.jsp("/WEB-INF/views/", ".jsp");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
// 开启静态资源查找
configurer.enable();
}
//添加拦截器 将拦截器加到ioc容器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//TODO:传入 拦截器对象 该方式 拦截全部请求
// registry.addInterceptor(new MyInterceptor());
//TODO:设置 拦截指定地址 * 任意一层字符串 ** 任意多层字符串
//registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/e1");
//error下的任意方法
//registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**");
//TODO:排除部分拦截 排除的地址应该在拦截地址内部!
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**")
.excludePathPatterns("/test/e2");
}
}
3.ioc容器初始化
点击查看代码
public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{MvcConfig.class};
}
@Override //dispatcherServlet拦截地址
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
目录结构
转发与重定向
@RequestMapping("view")
@Controller
public class JspController {
/**
* 快速查找视图
* 1.方法的返回值是字符串
* 返回值为 网页名字即可 前后缀在配置类已经写好
*/
@RequestMapping("jsp")
public String html(ModelMap model, HttpServletRequest request) {
// 设置共享域
model.addAttribute("data", "123456");
request.setAttribute("data1", "22222");
return "index"; //跳转到 index.jsp
}
/**
* 路径细节:【不使用springmvc, request response】
* 转发是项目下的资源跳转。路径: 项目下的地址 /view/jsp 忽略 tomcat中设置的 applicationContext
* 重定向项目下的资源可以是项目外的地址 重定向属于二次请求 路径: 项目下的地址 全地址 /springmvc/view/jsp 不忽略 tomcat中设置的 applicationContext
* 使用springmvc路径语法:
* "forward: 路径 | redirect: 路径 " 重定向,资源的地址也不需要写项目的根路径! /view/jsp
* 转发和重定向的地址都一样了! 直接写 /view/jsp 由springmvc转化成 - > /springmvc/view/jsp
*/
/**
* 转发:只能是项目下的资源
* 1.方法的返回值写成字符串
* 2.返回的字符串前 forward: /转发地址
*/
@RequestMapping("forward")//请求转发
public String forward(ModelMap model, HttpServletRequest request) {
// 请求转发到其他页面
// return "forward:/WEB-INF/views/2.jsp";
// 请求转发到其他控制器
return "forward:jsp";
// return "forward:/view/jsp";
/*
forward关键字,一旦添加了forward关键字,
控制器方法返回的视图名称就不会再与视图解析器中的前辍与后辍进行拼接,
所以必须写出相对于项目根的完整路径才能返回正确的视图 */
}
/**
* 重定向:
* 1.方法返回值写成字符串类型
* 2.返回字符串前面 redirect: /重定向的地址
*/
@RequestMapping("redirect")//请求重定向
public String redirect(ModelMap model, HttpServletRequest request) {
// 请求重定向到其他控制器
// return "redirect:/view/jsp";(建议 地址写完善一些 方便后期观看)
return "redirect:jsp";
}
}
标签:return,重定向,springMvc,---,地址,jsp,跳转,forward,public
From: https://www.cnblogs.com/weifengfuxiufa/p/17715227.html