SpringMVC
这里的servlet可以分为两部分,一部分是共有行为,一部分是特有行为。一个web中有多个servlet,那我们是否可以抽取一下公共的呢?
当servle分为两个部分时,客户端发起请求然后到Tomcat服务器里的TomCat引擎,然后直接到了servlet的共有行为,然后才到我们的特有行为pojo,因为共有行为被抽取了,所以我们只需要自己实现特有行为即可。这里的共有行为其实就是前端控制器,SpringMVC的前端控制器就是servlet。
下面看一下SpringMVC的开发步骤:
1. 导入SpringMVC的坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
2. 配置SpringMVC核心控制器DispathcerServlet
<!-- 配置SpringMVC前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3. 创建Controller视图
创建好的方法要放到spring容器中,所以写上@Controller
又因为你请求的地址和你的方法要有一个关系,所以在这里要写到@RequestMapping,这个翻译过来就是请求映射了。
4. 使用注解配置Controller中的业务方法的映射地址
@Controller
public class UserController {
@RequestMapping("/quick")
public String save(){
System.out.println("Controller save running......");
return "success.jsp";
}
}
以前用javaweb是重定向啥的,现在直接return 一个jsp调到这个视图中是不是方便很多。
这里写完注解但是Spring是不知道的,所以需要组件扫描。之前spring的配置文件applicationContext.xml中有一个<context:conponent-scan>用来配置组件扫描,但是在springmvc中要写在spring-mvc.xml中。
5. 配置SpringMvc核心文件spring-mvc.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 http://www.springframework.org/schema/context/spring-context.xsd">
<!-- Controller 配置组件扫描-->
<context:component-scan base-package="com.itheima.controller" />
</beans>
那么配置好spring-mvc这个文件了,但是还不知道在哪儿?spring-mvc这个文件就是给前端控制器用的,在控制器里告诉它。
<!-- 配置SpringMVC前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
可以看到访问映射时跳转到了success.jsp页面并在控制台输出