1.Spring容器和web应用的结合
要求在程序启动时,Spring也启动。对于Web应用,服务器启动有一个ServletContext对象,可以使用Spring自带的ContextLoaderListener来监听。
需要导包:spring-web 和 spring-webmvc
配置文件部分代码(web.xml):
<!-- spring容器跟随服务器启动而开启 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定Spring配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
2.SpringMVC快速入门
接受请求的是Servlet,在SpringMVC框架中使用前端控制器(DispatcherServlet),用来拦截所有请求,分发到SpringMVC各个控制器处理,达到原来的Servlet的功能。
SpringMVC简单流程:
SpringMVC配置步骤:
1.配置前端控制器
2.编写springmvc配置文件用来管理Controller对象
2.编写处理器Controller
3.编写jsp页面
1.前端控制器配置代码(在web.xml配置文件中配置)
<!-- 前端控制器:拦截请求,分配给SpringMVC处理
SpringMVC:前端控制器-DispatcherServlet接收所有的请求
把请求分发给SpringMVC其他控制器来处理
其他控制器Controller 使用Spring容器进行管理的
-->
<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:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!-- /* : 拦截所有,静态资源。jsp css js 任何 强烈建议不要使用
/ : 拦截所有,jsp js css 建议使用,前台系统
*.action: 后缀匹配 管理系统
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
2.创建Springmvc配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
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-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 单纯管理Controller对象 -->
<context:component-scan base-package="com.zzxx.ssm.controller"></context:component-scan>
<!-- 配置处理器映射器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> -->
<!-- 配置处理器适配器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> -->
<!-- 配置mvc注解驱动, 同时取代上面两个标签 -->
<mvc:annotation-driven/>
</beans>
3.编写Controller控制器
// 用来接收前端控制器分发的请求
// localhost:8080/springmvc-day01/hello
@Controller // 这是控制器 - Spring容器
public class HelloController {
// 只有请求路径匹配,才访问该方法
@RequestMapping("/hello")
public ModelAndView hello() {
// 查数据 - 模拟
User user = new User();
user.setUsername("lucy");
// 用于jsp显示
ModelAndView mav = new ModelAndView();
// 等同于对象加入到了request域中
mav.addObject("user", user);
// 转发
mav.setViewName("/WEB-INF/jsp/success.jsp");
return mav; // SpringMVC接收到返回值,并自动处理
}
@RequestMapping("/hi")
public ModelAndView hi() {
// 查数据
User user = new User();
user.setUsername("lucy");
ModelAndView mav = new ModelAndView();
mav.addObject("user", user);
mav.setViewName("/WEB-INF/jsp/success.jsp");
return mav;
}
}
4.配置指定分发的jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${user.username } 欢迎登录
</body>
</html>
SpringMVC详细流程图: