依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>top.shuxin</groupId>
<artifactId>springmvc</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</project>
入门
1、配置中央调度器
<!-- 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-->
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- springmvc 的配置文件的位置属性-->
<param-name>contextConfigLocation</param-name>
<!-- 指定自定义配置文件位置-->
<param-value>classpath*:springmvc.xml</param-value>
</init-param>
<!-- 在tomcat启动后,创建servlet对象-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!-- 使用框架的时候,url-pattern可以使用两种值使用扩展名方式, 语法*.xxxx ,xxxx是自定义的扩展名。常用的方式 *.do,*,action,*.mvc等等http://localhost:8080/myweb/some.do-->
<!-- http://localhost:8080/myweb/other.do-->
<!-- 2.使用斜杠"/-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
目录结构
2、声明组件扫描器(扫描Controller所在包)
<!-- 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="com.shuxin.controller"/>
</beans>
3、创建控制类和控制方法
// UserController
@Controller
*public class* UserController {
*//* *请求映射,作用是将一个请求和一个方法绑定在一起,一个请求指定一个方法
\* @RequestMapping("/user")
*public* ModelAndView userNameFun(){
ModelAndView modelAndView = *new* ModelAndView();
modelAndView.addObject("msg","dasf");
modelAndView.setViewName("/show.jsp");
*return* modelAndView;
}
}
4、创建一个名为show.jsp的文件
<h3>${msg}</h3>
index.jsp
<a href="/s/user/">跳转</a>
5、运行即可
直接访问jsp文件也可以进去,但是数据是获取不到的,所以要控制这个访问的路径
将文件放入到WEB-INF路径下就可以实现用户不可以直接使用链接访问,而是使用链接跳转访问
并且在返回视图时这样写
modelAndView.setViewName("/WEB-INF/show.jsp");
视图解析器(简写路径和扩展名)
多个路径重复时,可以声明一个视图解析器,将冗余部分替换成公共的
// springmvc.xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图文件路径(前缀)-->
<property name="prefix" value="/WEB-INF/"/>
<!--视图文件的扩展名 (后缀)-->
<property name="suffix" value=".jsp"/>
</bean>
当配置了视图解析器后,可以使用逻辑名称(文件名),指定视图
框架会使用视图解析器的前缀 + 逻辑名称 +后缀 组成完成路径, 这里就是字符连接操作
modelAndView.setViewName("show");