配置版
- 新建一个module,springmvc-02-hello , 添加web的支持!
- 确定导入SpringMVC的依赖
- 配置web.xml ,注册DispatcherServlet 中心控制器
```java
<?xml version=”1.0” encoding=”UTF-8”?>
- 编写SpringMVC 的配置文件 名称 springmvc-servlet.xml
- 说明,这里的名称要求是按照官方来的java
<?xml version=”1.0” encoding=”UTF-8”?>
- 添加处理 映射器java
- 添加处理器适配器java
- 添加 视图解析器java
- 编写业务 Controller 要么实现Controller接口,要么增加注解,需要返回一个ModelAndView 装数据,封视图java
package com.kuang.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里我们先导入Controller接口
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中。Model
mv.addObject(“msg”,”HelloSpringMVC!”);
//封装要跳转的视图,放在ModelAndView中
mv.setViewName(“hello”); //: /WEB-INF/jsp/hello.jsp
return mv;
}
}
- 将自己的类交给SpringIOC容器,注册beanjava
- 编写跳转的jsp页面,显示ModelandView存放的数据,以及正常页面java
<%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
${msg}
- 进行测试
- 可能出现的问题,排查步骤, 404
- 查看控制台输出,确认是否是jar包缺少
- 就啊日报存在,显示无法输出,就在idea的项目发布中,添加lib依赖
- 重启tomcat
- 一般不会采用配置开发,而是注解开发,看下文
<a name="dlGxU"></a>
# 注解版
- 新建一个项目,添加web支持
- 由于maven可能存在资源过滤问题,配置完善java
- 在pom.xml文件引入相关的依赖:主要有Spring框架核心库、Spring MVC、servlet , JSTL等。
- 配置web.xmljava
<?xml version=”1.0” encoding=”UTF-8”?>
<a name="pMXCx"></a>## 注意点- / 和 /* 的区别- < url-pattern > / </ url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。- < url-pattern > /* </ url-pattern > 会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。- 注意web.xml版本问题,要最新版!<br />- 注册DispatcherServlet<br />- 关联SpringMVC的配置文件<br />- 启动级别为1<br />- 映射路径为 / 【不要用/*,会404】<a name="hWDVR"></a>## 添加Spring MVC配置文件- 在resource目录下添加 springmvc-servlet.xml 配置文件,配置形式与spring容器配置基本类似,为了支持基于注解的ioc,设置自动扫描包,具体```java<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 --><context:component-scan base-package="com.kuang.controller"/><!-- 让Spring MVC不处理静态资源 --><mvc:default-servlet-handler /><!--支持mvc注解驱动在spring中一般采用@RequestMapping注解来完成映射关系要想使@RequestMapping注解生效必须向上下文中注册DefaultAnnotationHandlerMapping和一个AnnotationMethodHandlerAdapter实例这两个实例分别在类级别和方法级别处理。而annotation-driven配置帮助我们自动完成上述两个实例的注入。--><mvc:annotation-driven /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean></beans>
- 在视图解析器中我们吧所有的视图都存放在 /WEB-INF/ 目录下,可以保证视图安全,这个目录下的文件,客户端不能直接访问
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;
@Controller @RequestMapping(“/HelloController”) public class HelloController {
//真实访问地址 : 项目名/HelloController/hello @RequestMapping(“/hello”) public String sayHello(Model model){ //向模型中添加属性msg与值,可以在JSP页面中取出并渲染 model.addAttribute(“msg”,”hello,SpringMVC”); //web-inf/jsp/hello.jsp return “hello”; } }
- Controller 为了让spring ioc 容器初始化的时候自动扫描到- RequestMapping 为了映射请求路径,因为类与方法上都有映射所以访问时路径为拼接撑的 /HelloController/hello- 方法中声明Model类型的参数是为了吧Action中的数据带到视图中- 方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成 WEB-INF/jsp/hell.jsp<a name="KOpKh"></a>## 创建视图层- 在 WEB-INF/jsp 目录中创建 hello.jsp 视图可以直接取出并展示从 Controller带回的信息。可以通过EL表示取出Model中存放的值,或者对象。```java<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>SpringMVC</title></head><body>${msg}</body></html>
-
小结
实现步骤
新建项目
- 导入jar包
- 编写web.xml 注册DispatcherServlet
- 编写springmvc配置文件
- 创建对应的控制类,controller
- 完善前端视图和controller之间的对应
-
使用springMVC必须配置的三大件:
处理器映射器
- 处理器适配器
- 视图解析器
通常需要手动配置视图解析器,处理器映射器和处理器适配器只需要开启注解驱动即可,省掉打断的xml配置
