Spring MVC程序搭建入门
环境准备
- idea
- jdk 1.8 以上版本
- tomcat
Spring MVC 原理图
此图为Spring MVC 原理图,转自
https://www.cnblogs.com/chuiyuan/p/5301216.html
Spring MVC底层原理初探
-
新建maven空的工程spring-parent
-
新建spring-mvc-01模块
工程目录结构如下
详细结构图如下
-
引入依赖包如下
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> </dependencies>
-
记得添加web支持
-
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"> <!-- 注册DispatcherServlet--> <servlet> <servlet-name>spring-mvc-servlet</servlet-name> <!--设置servlet class 名字--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 关联spring mvc上下文配置xml --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- / 匹配请求中不包括jsp;/*匹配所有请求包括jsp --> <servlet-mapping> <servlet-name>spring-mvc-servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
-
编写Controller业务
public class MyController implements Controller { public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { PrintWriter writer = httpServletResponse.getWriter(); writer.write("hello spring mvc"); writer.flush(); return null; } }
-
配置servlet 上下文spring-servlet.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 添加HandlerMapping bean--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 添加HandlerAdapter bean--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--视图解析器:DispatcherServlet给他的ModelAndView--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--后缀--> <property name="suffix" value=".jsp"/> </bean> <bean id="/hello" class="com.shadow.controller.MyController"/> </beans>
-
测试
企业开发配置
如上为Spring MVC 配置版实现,下面我们看下实际企业中如何配置开发!
-
初始环境同上
-
引入maven依赖包,同上
-
配置web.xml配置,同上
-
配置spring-servlet.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:mvc="http://www.springframework.org/schema/mvc" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 拷贝狂神的解说,此处实际上简化了HandlerMapping和HandlerAdapter的配置 支持mvc注解驱动 在spring中一般采用@RequestMapping注解来完成映射关系 要想使@RequestMapping注解生效 必须向上下文中注册DefaultAnnotationHandlerMapping 和一个AnnotationMethodHandlerAdapter实例 这两个实例分别在类级别和方法级别处理。 而annotation-driven配置帮助我们自动完成上述两个实例的注入。 --> <mvc:annotation-driven/> <!-- 自动扫描包--> <context:component-scan base-package="com.shadow.controller"></context:component-scan> <!--<!– 让Spring MVC不处理静态资源 .css .js .html .mp3等–>--> <mvc:default-servlet-handler /> <!--视图解析器:DispatcherServlet给他的ModelAndView--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--后缀--> <property name="suffix" value=".jsp"/> </bean> </beans>
如果报错,参考https://blog.csdn.net/yuynim/article/details/79738802 链接,mvc命名空间一定要 对
-
Controller 业务编写
@Controller public class MyController { @RequestMapping("/hello") @ResponseBody public String test(){ return "hello, spring mvc"; } }
关于
对于此 <mvc:default-servlet-handler />注解,大家可以自己注释掉测试一下
- 第一步,将index.jsp 替换为index.html
- 此注释不注释掉
访问http://localhost:8080/index.html
– 结果
-
将此注释注释掉
访问http://localhost:8080/index.html
– 结果
服务端
[http-nio-8080-exec-1] org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET /index.html
参考链接如下:
https://blog.csdn.net/qq_33369905/article/details/106647319
https://www.cnblogs.com/chuiyuan/p/5301216.html
https://blog.csdn.net/yuynim/article/details/79738802
顺便说下,最近发现狂神的csdn 讲的还不错,大家可以去看看,参考链接中第一个!