突然想对springmvc做个简单的整理哈哈~写到后面突然有很多内容,不是一两句话、一两个例子能说清楚,待完善中...
一、什么是springmvc
(1)理解
springmvc是当前的主流的MVC框架,跟struts2类似,虽然struts2是已经是一个成熟的框架,但是随着springmvc后来居上,很多公司都开始用springmvc+spring+mybatis进行开发。struts2开发效率高,但是springmvc性能比struts2好,所以springmvc是比较适用大型的项目开发。其实MVC框架很多内容可以进行类比,所以学了struts2之后再学springmvc也就没那么难。下面的总结可能有些整理的不全面
(2)原理图
二、spring环境的搭建
(1)导入相关jar包(可以用maven依赖注入)
不用annotation:
commons-logging-1.1.3.jar
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
spring-web-4.2.4.RELEASE.jar
spring-webmvc-4.2.4.RELEASE.jar
用annotation:
commons-logging-1.1.3.jar
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
spring-web-4.2.4.RELEASE.jar
spring-webmvc-4.2.4.RELEASE.jar
spring-aop-3.1.1.RELEASE.jar
用maven:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.6.RELEASE</version> </dependency>
二、web.xml
DispatcherServlet归根到底就是servlet,所以在web.xml配置DispatcherServlet跟配置servlet一样
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <!-- 显示名称 --> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <!-- spring容器配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 定义DispatcherServlet,与struts2相似 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 服务器一启动,就立刻初始化 DispatcherServlet类 --> <load-on-startup>1</load-on-startup> </servlet> <!-- servlet的映射 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 哪些url经过进入给spring-mvc.xml配置 --> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
三、springmvc-servlet.xml
这个xml就是对controller的配置,包括如何url访问如何找到对应的controller;controller返回的ModelAndView或者String,如何根据其找到相对应的jsp页面;还有各种各样的配置(比如json、乱码...)下面的代码不是用注解方式
<!-- 启动自动扫描该包下所有的Bean(例如@Controller) --> <!--<context:component-scan base-package="com.team" /> --> <!-- 配置handlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 配置handlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- 定义视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <!-- 前缀 --> <property name="prefix"> <value>/WEB-INF/view/</value> </property> <!-- 后缀 --> <property name="suffix"> <value>.jsp</value> </property> </bean> <!-- 配置请求和处理器 --> <bean name="/hello.do" class="com.team.controller.HelloController"></bean>
四、controller
对于controller有多种实现方法,注解的方式比较多,后面再对注解进行详细写
public class HelloController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msg", "hello springmvc"); mv.setViewName("hello");//设置跳转的页面的名字 return mv; } }
五、jsp页面
通过${msg}就能将对应的数据显示出来
六、访问的路径:http://localhost:8080/项目名/hello.do 就可以访问到对应的/WEB-INF/view/hello.jsp对应的jsp页面