SSM框架中页面之间转发和重定向详解
项目架构:注意要在web.xml配置前端控制器springDispatcherServletspringmvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XM
·
项目架构:
注意要在web.xml配置前端控制器springDispatcherServlet
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 指定控制器的扫描包 -->
<context:component-scan
base-package="com.etc.controller"></context:component-scan>
<!-- 静态资源处理 -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 视图解析器配置 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- viewClass -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
创建一个ForwaredRedirectController类,具体情况看代码里的注解。
ForwaredRedirectController.java
@Controller
public class ForwaredRedirectController {
@GetMapping("fwd1")
public String fwd1() {
//<property name="prefix" value="/WEB-INF/jsp/"></property>
//<property name="suffix" value=".jsp"></property>
return "fwd1";
}
@GetMapping(value = "fwd2")
public String fwd2() {
//加入了forward关键字,配置视图解析器的前缀和后缀失效了,此时跳转到wed2的一个映射地址去
return "forward:fwd2";//跳转到 wed2的映射url,其实就是跳转到自己方法上,出现StackOverflowError
}
@GetMapping("fwd3")
public String fwd3() {
return "forward:fwd3.jsp";//跳转到 webContent目录下的fwd3.jsp
}
@GetMapping("fwd4")
public String fwd4() {
//加入了forward关键字,配置视图解析器的前缀和后缀失效了,此时跳转到fwd1的一个映射地址去
return "forward:fwd1.jsp";//跳转到 fwd1的映射url
}
//redirect---
@GetMapping("fwd5")
public String fwd5() {
///WEB-INF/目录下的文件不能直接重定向方法
return "redirect:/WEB-INF/jsp/hello.jsp";//重定向 /WEB-INF/JSP/目录下的hello.jsp
}
@GetMapping("fwd6")
public String fwd6() {
return "redirect:hello.jsp"; //重定向 WebContent/fwd3.jsp
}
@GetMapping("fwd7")
public String fwd7() {
return "redirect:/fwd1.jsp"; //重定向 redirect:fwd1 控制器的url: fwd1
}
}
如果访问路径里多了一个/api/先到类在到方法,相应的访问路径也会发生变化,主要是相对路径在变。
@Controller
@RequestMapping("api")
public class ForwaredRedirectController2 {
@GetMapping("fwd1")
public String fwd1() {
//<property name="prefix" value="/WEB-INF/jsp/"></property>
//<property name="suffix" value=".jsp"></property>
return "fwd1";//跳转到/WEB_INF/jsp/fwd1.jsp
}
@GetMapping(value = "fwd2")
public String fwd2() {
//会跳转到相对路径/api/fwd2.jsp
return "forward:fwd2.jsp";
}
@GetMapping("fwd3")
public String fwd3() {
return "forward:/fwd3.jsp";//重定向到 webContent目录下的fwd3.jsp
}
}
这里再提供两种向页面传送数据的方法:
@Controller
@RequestMapping("m")
public class ModelTestController {
//---向页面传送数据的方法,方法一:传统HttpServletResponse
@GetMapping("mtc1")
public String mtc1(HttpServletRequest request) {
request.setAttribute("name", "tom");
return "mtc1";
}
//---方法二:利用Spring中的 Model-ModelMap-Map
@GetMapping("mtc2")
public String mtc2(Model model) {
model.addAttribute("name", "jacon");
model.addAttribute("name1", "mick");
return "mtc1";
}
@GetMapping("mtc3")
public String mtc3(Model model,ModelMap modelMap,Map map) {
System.out.println(model==modelMap);
System.out.println(model==map);
model.addAttribute("name", "jacon");
modelMap.addAttribute("name1", "stivenjackon");
map.put("name2", "jj");
return "mtc1";
}
}
到这里就已经完成了spring+springmvc的组合和数据间的传送,静待后续更近..
更多推荐
已为社区贡献3条内容
所有评论(0)