SpringMVC
来源:互联网 发布:美国留学 知乎 编辑:程序博客网 时间:2024/04/27 00:34
SpringMVC通过实现MVC模式,将数据、业务与展现进行了分离。SpringMVC和Struts2类似,但SpringMVC采用了可插拔的组件结构,更加具有可扩展性和灵活性。
使用SpringMVC有基于XML配置文件和基于注解两种形式。
SpringMVC的获取
SpringMVC属于Spring FrameWork的后续产品。从开发Spring所使用的spring-framework-4.2.5.RELEASE-dist.zip,将其解压,其中的libs目录也包含了开发SpringMVC框架所依赖的jar包,具体如下:
和开发Spring一样,为了支持SpringMVC处理日志,我们还需要commons-logging-1.1.3.jar。
以上8个jar包,就是使用SpringMVC时需要导入的包。随着学习的深入,以后可能会逐步导入更多的jar包。若项目因为缺少jar包而运行失败,Eclipse等开发工具都会给出错误提示,根据提示内容,查找并加入所需的jar包。
开发SpringMVC程序
(1)创建一个Web项目(项目名SpingMVCDemo),并导入上述8个jar包(2)在src目录下创建SpringMVC的配置文件:springmvc.xml。(在使用安装了Spring Tool Suite的Eclipse中,具体的创建步骤:鼠标右键src →new →Spring Bean Configuration File →输入配置文件名“springmvc.xml” →finish,然后再在Namespaces中选择“beans”、“context”及“mvc”)(3)在web.xml中配置前置控制器DispatcherServlet,用于拦截与<url-pattern>相匹配的请求,如下,web.xml<servlet> <servlet-name>springDispatcherServlet</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> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
其中,
①通过url-pattern指定了DispatcherServlet拦截的请求是:所有请求(“/”)。拦截后即交给SpringMVC处理。
SpringMVC中常见的url-pattern值如下表,
②通过标签load-on-startup设置让DispatcherServlet随着服务(如Tomcat)的启动而同时启动。
③通过contextConfigLocation的<param-value>
值,指定了SpringMVC配置文件的路径是:资源路径(如src目录)中的springmvc.xml文件。若不设置此<init-param>
,则会根据SpringMVC的“默认约定”,自动加载认加WEB-INF目录中的<servlet-name>
-servlet.xml。
例如,本web.xml中配置DispatcherServlet的标签servlet-name是“springDispatcherServlet”,则默认路径就是WEB-INF/springDispatcherServlet-servlet.xml。
配置完contextConfigLocation后,SpringMVC就会随着服务(如Tomcat)的启动而自动初始化。
(4)开发前端请求页面
index.jsp
…<body> <a href="SpringMVC">My SpringMVC Demo</a></body
如上,我们使用超链接向web.xml中的<url-pattern>
发送一个可以被拦截的请求,然后交由SpringMVC处理。
(5)开发请求处理类
SpringDemo.java
package org.lzy.handler;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class SpringDemo{ @RequestMapping("/SpringMVC") public String welcomeToSpringMVC() { return "success"; }}
如上,使用@Controller注解来标识本类是一个SpringMVC Controller 对象; 使用@RequestMapping注解来映射请求的URL。
例如,在index.jsp发出的请求“/SpringMVC”,将会被映射到@RequestMapping(“/SpringMVC”)所标识的方法来处理。
(6)编写SpringMVC配置文件
springmvc.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" 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.2.xsd 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-4.2.xsd"> <!-- 配置需要扫描的包 --> <context:component-scan base-package="org.lzy.handler"></context:component-scan> <!-- 配置试图解析器:把请求处理类的返回值,加工成最终的视图路径--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/views/"></property> <property name="suffix" value=".jsp"></property> </bean></beans>
其中:
①通过标签context:component-scan,将“请求处理类(FirstSpringDemo.java)”所在的包交给SpringMVC扫描。SpringMVC在接受到请求后,就会去在该包内寻找标记有@Controller的处理类,再在找到的处理类中寻找标记有@RequestMapping的处理方法。若找到请求路径和处理方法相匹配,就会用该处理方法来处理此请求。
例如,前台<a href="SpringMVC">…</a>
发送一个路径为“SpringMVC”的请求;而在<context:component-scan>
所在包中,恰好有一个请求处理类(SpringDemo.java)的welcomeToSpringMVC()方法被标识为了@RequestMapping(“/SpringMVC”),其中参数“/SpringMVC”正好与发送的请求“SpringMVC”代表同一个路径,SpringMVC就会用此welcomeToSpringMVC()方法来处理该请求。
②通过<bean>
指定视图解析器为“InternalResourceViewResolver”类型。 此解析器会把“请求处理类中处理方法的返回值”按照“前缀+方法返回值+后缀”的形式进行加工,并把加工后的返回值作为目的路径进行跳转。
此解析器的常见<property>
属性值如下表,
<property>
的value值 suffix 给“请求处理类中处理方法的返回值”加上后缀,后缀就是该<property>
的value值例如,请求处理类SpringDemo.java 的处理方法welcomeToSpringMVC()的返回值是“success”,就会给“success”加上前缀“/views/”和后缀“.jsp”,即加工后的返回值是“/views/success.jsp”。最后就会跳转到“/views/success.jsp”页面。
success.jsp
…<body> Welcome to SpringMVC</body>…
- SpringMVC
- springmvc
- SpringMVC
- SpringMVC
- springMvc
- springMVC
- springmvc
- springMVC
- springMVC
- springmvc
- SpringMVC
- SpringMVC
- springMvc
- springmvc
- springmvc
- SpringMVC
- Springmvc
- springmvc
- 习题5(5.3)
- 上拉刷新下拉加载
- do while语句
- jQuery表单验证添加数据删除数据
- “猪法”and“熊法”
- SpringMVC
- ubuntu shell编程
- EventBus3.0
- 我的NOIP-Bzy
- ZOJ 3985 String of CCPC
- 多线程糗百爬虫
- 读书笔记——魔鬼经济学3
- Android——第三方QQ登录
- android+MVP+Retrofit+RxJava做网络请求