web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册springmvc核心对象DispatcherServlet
需要在tomcat服务启动后,创建DispatcherServlet的对象实例
为什么要创建DispatcherServlet对象的实例呢?
因为DispatcherServlet在他的创建过程中,会同时创建springmvc容器对象,
读取springmvc的配置文件,把这个配置文件中的对象都创建好,
当用户发起请求时,就可以直接使用对象
servlet初始化会执行init()方法。DispatcherServlet在init()方法中{
//实现容器
WebApplicationContext ctx=new ClassPathXmlApplicationContext("springmvc.xml")
//把容器放到ServletContext中
getServletContext().setAttribute(key,ctx);
}
-->
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class >org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--自定义springmvc读取配置文件的位置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--tomcat启动后,就创建DispatcherServlet对象,执行init方法-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!--
使用框架时,url-pattern可以用两种值
1. 使用扩展名方式,语法 *.xxx, xxx是自定义的扩展名
http://localhost"8080/myweb/some.do
http://localhost"8080/myweb/other.do
2.使用斜杠
-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--组件扫描器-->
<context:component-scan base-package="package1"></context:component-scan>
<!--声明视图解析器,帮助设置视图文件路径-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀:视图文件的路径-->
<property name="prefix" value="/WEB-INF/view/"></property>
<!--后缀:视图文件的扩展名-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div>当处理方法返回ModelAndView实现显式转发</div>
<form action="forward.do" method="get">
姓名<input type="text" name="name"/><br/>
年龄<input type="text" name="age"/><br/>
<input type="submit" value="提交请求"/>
</form>
<br/>
<br/>
<br/>
<div>当处理方法返回ModelAndView实现显式重定向</div>
<form action="redirect.do" method="get">
姓名<input type="text" name="name"/><br/>
年龄<input type="text" name="age"/><br/>
<input type="submit" value="提交请求"/>
</form>
</body>
</html>
控制器类
package package1;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MyController {
/*
处理器方法返回ModelAndView,实现转发操作
语法:setViewName("forward:视图文件的完整路径")
forward:不与视图解析器一起工作,就当没有视图解析器
* */
@RequestMapping("/forward.do")
public ModelAndView doforward(String name,int age){
System.out.println("接收成功!name="+name+","+"age="+age);
ModelAndView mv=new ModelAndView();
mv.addObject("myname",name);
mv.addObject("myage",age);
mv.setViewName("forward:/WEB-INF/view/show.jsp");
return mv;
}
/*
处理器方法返回ModelAndView,实现重定向操作
语法:setViewName("redirect:视图文件的完整路径")
redirect:不与视图解析器一起工作,就当没有视图解析器
!!重定向不能访问WEB-INF里的资源,只能访问静态资源
* */
@RequestMapping("/redirect.do")
public ModelAndView doredirect(String name,int age) {
ModelAndView mv = new ModelAndView();
mv.addObject("myname", name);
mv.addObject("myage", age);
mv.setViewName("redirect:/show1.jsp");
return mv;
}
}
show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>show.jsp</h3>
<h3>姓名:${myname}</h3><br/>
<h3>年龄:${myage}</h3>
</body>
</html>
show1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>show1.jsp</h3>
<h3>姓名:${param.myname}</h3><br/>
<h3>年龄:${param.myage}</h3>
</body>
</html>
启动tomcat服务器访问url
转发测试
转发测试结果
地址栏(重点关注)
重定向测试
重定向测试结果
地址栏(重点关注)