【SpringMVC-02】第一个SpringMVC
配置版
1、新建一个Moudle , springmvc-02-hello , 添加web的支持!
2、确定导入了SpringMVC 的依赖!
3、配置web.xml , 注册DispatcherServlet
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 5 version="4.0"> 6 7 <!--1.注册DispatcherServlet--> 8 <servlet> 9 <servlet-name>springmvc</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 11 <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml--> 12 <init-param> 13 <param-name>contextConfigLocation</param-name> 14 <param-value>classpath:springmvc-servlet.xml</param-value> 15 </init-param> 16 <!--启动级别-1--> 17 <load-on-startup>1</load-on-startup> 18 </servlet> 19 20 <!--/ 匹配所有的请求;(不包括.jsp)--> 21 <!--/* 匹配所有的请求;(包括.jsp)--> 22 <servlet-mapping> 23 <servlet-name>springmvc</servlet-name> 24 <url-pattern>/</url-pattern> 25 </servlet-mapping> 26 27 </web-app>
4、编写SpringMVC 的 配置文件!名称:springmvc-servlet.xml : [servletname]-servlet.xml
说明,这里的名称要求是按照官方来的
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd"> 6 7 </beans>
5、添加 处理映射器
1 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
6、添加 处理器适配器
1 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
7、添加 视图解析器
1 <!--视图解析器:DispatcherServlet给他的ModelAndView--> 2 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> 3 <!--前缀--> 4 <property name="prefix" value="/WEB-INF/jsp/"/> 5 <!--后缀--> 6 <property name="suffix" value=".jsp"/> 7 </bean>
8、编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解;需要返回一个ModelAndView,装数据,封视图;
1 package com.kuang.controller; 2 3 import org.springframework.web.servlet.ModelAndView; 4 import org.springframework.web.servlet.mvc.Controller; 5 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 9 //注意:这里我们先导入Controller接口 10 public class HelloController implements Controller { 11 12 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 13 //ModelAndView 模型和视图 14 ModelAndView mv = new ModelAndView(); 15 16 //封装对象,放在ModelAndView中。Model 17 mv.addObject("msg","HelloSpringMVC!"); 18 //封装要跳转的视图,放在ModelAndView中 19 mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp 20 return mv; 21 } 22 23 }
9、将自己的类交给SpringIOC容器,注册bean
1 <!--Handler--> 2 <bean id="/hello" class="com.kuang.controller.HelloController"/>
10、写要跳转的jsp页面,显示ModelandView存放的数据,以及我们的正常页面;
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>Kuangshen</title> 5 </head> 6 <body> 7 ${msg} 8 </body> 9 </html>
11、配置Tomcat 启动测试!

注解版
1.同样新建一个Moudle , springmvc-03-hello , 添加web的支持,在项目模块管理的Artifacts中添加lib包的依赖!
2.为了防止资源过滤问题现在maven中添加如下代码
1 <build> 2 <resources> 3 <resource> 4 <directory>src/main/java</directory> 5 <includes> 6 <include>**/*.properties</include> 7 <include>**/*.xml</include> 8 </includes> 9 <filtering>false</filtering> 10 </resource> 11 <resource> 12 <directory>src/main/resources</directory> 13 <includes> 14 <include>**/*.properties</include> 15 <include>**/*.xml</include> 16 </includes> 17 <filtering>false</filtering> 18 </resource> 19 </resources> 20 </build>
3.在web.xml中添加如下配置
注:<url-pattern>/</url-pattern>中的 / 和 /*。前者不包含.jsp,后者包含(一般用前者,因为包含jsp的话会造成一个循环解析问题)
1 <!--1.注册servlet--> 2 <servlet> 3 <servlet-name>SpringMVC</servlet-name> 4 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5 <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联--> 6 <init-param> 7 <param-name>contextConfigLocation</param-name> 8 <param-value>classpath:springmvc-servlet.xml</param-value> 9 </init-param> 10 <!-- 启动顺序,数字越小,启动越早 --> 11 <load-on-startup>1</load-on-startup> 12 </servlet> 13 14 <!--所有请求都会被springmvc拦截 --> 15 <servlet-mapping> 16 <servlet-name>SpringMVC</servlet-name> 17 <url-pattern>/</url-pattern> 18 </servlet-mapping>
4.在resources下新建springmvc-servlet.xml,并做如下配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 https://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/mvc 11 https://www.springframework.org/schema/mvc/spring-mvc.xsd"> 12 13 <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 --> 14 <context:component-scan base-package="com.yqp.controller"/> 15 <!-- 让Spring MVC不处理静态资源 --> 16 <mvc:default-servlet-handler /> 17 <!-- 18 支持mvc注解驱动 19 在spring中一般采用@RequestMapping注解来完成映射关系 20 要想使@RequestMapping注解生效 21 必须向上下文中注册DefaultAnnotationHandlerMapping 22 和一个AnnotationMethodHandlerAdapter实例 23 这两个实例分别在类级别和方法级别处理。 24 而annotation-driven配置帮助我们自动完成上述两个实例的注入。 25 --> 26 <mvc:annotation-driven /> 27 28 <!-- 视图解析器 --> 29 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 30 id="internalResourceViewResolver"> 31 <!-- 前缀 --> 32 <property name="prefix" value="/WEB-INF/jsp/" /> 33 <!-- 后缀 --> 34 <property name="suffix" value=".jsp" /> 35 </bean> 36 37 </beans>
5.在WEB-INF下新建跳转页面/jsp/hello.jsp
6.创建一个Controller并用注解配置
1 @Controller 2 public class HelloController { 3 4 @RequestMapping("/hello") 5 public String sayHello(Model model){ 6 model.addAttribute("msg","你好,余大本事你好厉害!!"); 7 8 return "hello"; 9 } 10 11 }
7.在jsp/hello.jsp中获取信息并输出
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>Title</title> 5 </head> 6 <body> 7 ${msg} 8 </body> 9 </html>
8.配置Tomcat并启动测试!


浙公网安备 33010602011771号