为什么要学习springMVC,springMVC和struts2的比较
SpringMVC与Struts2区别 | |||
对比项目 | SrpingMVC | Struts2 | 优势 |
国内市场情况 | 有大量用户,一般新项目启动都会选用springmvc | 有部分老用户,老项目组,由于习惯了,一直在使用。 | 国内情况,springmvc的使用率已经超过Struts2 |
框架入口 | 基于servlet | 基于filter | 本质上没太大优势之分,只是配置方式不一样 |
框架设计思想 | 控制器基于方法级别的拦截,处理器设计为单实例 | 控制器基于类级别的拦截, 处理器设计为多实例 | 由于设计本身原因,造成了Struts2,通常来讲只能设计为多实例模式,相比于springmvc设计为单实例模式,Struts2会消耗更多的服务器内存。 |
参数传递 | 参数通过方法入参传递
| 参数通过类的成员变量传递 | Struts2通过成员变量传递参数,导致了参数线程不安全,有可能引发并发的问题。 |
与spring整合 | 与spring同一家公司,可以与spring无缝整合 | 需要整合包 | Springmvc可以更轻松与spring整合 |
简单的使用srpingmvc的开发步骤
创建工程
导入jar包
编写控制类
package com.angus.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//使用注解标识这是一个控制器
@Controller
public class HellowControll {
//注解用来绑定请求地址
@RequestMapping("hello")
public ModelAndView hello() {
System.out.println("hello springmvc...");
ModelAndView mav = new ModelAndView();
//设置模型数据,用于传递jsp
mav.addObject("msg", "hello springmvc...");
//设置视图名字,用于相应用户
mav.setViewName("/WEB-INF/jsp/hello.jsp");
return mav;
}
}
创建页面
创建和配置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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 配置controller扫描包 -->
<context:component-scan base-package="com.angus.springmvc.controller" />
</beans>
在web.xml中配置前端控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>01-springmvc</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 核心控制器的配置 -->
<servlet>
<servlet-name>springmvc</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>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
springmvc代码的执行流程
① 客户端发送名为 hello.action 的请求
② 请求被<servlet-mapping> 将带 .action 的请求拦截下来,交给名为springmvc的<servlet>核心控制器来处理。
③<servlet>核心控制器
④<servlet>核心控制器加载一些参数
⑤加载springmvc的配置文件
⑥开启控制类的包扫描
⑦找到控制器类
⑧到控制器类里边去,找到带 @Controller的注解
⑨ @Controller 与 @RequestMapping 相对照
⑩ @RequestMappin和请求相对应
最后加载控制类,完成相应,将结果处理结果返回。
springmvc默认组件的加载
处理器映射器
在spring的核心配置文件里边配置一个处理器映射器
还需要配置一个处理器适配器
映射器和适配器是成套使用的,如果一个用最新的,那么另外一个也需要用最新的。
显然,这么长的一个名字,我们不一定能能够记下来,那么该怎么办呢,还可以
接着我们为了方便在控制器里边对页面的访问更加简单,我们还可以配置 视图解析器
springmvc的架构体系
springmvc的核心组件是:处理器映射器,处理器适配器,视图解析器,还有前端控制器
整个流程就是,用户发送一个请求,到前端控制器,然后前端控制器,到处理器映射器上去找谁来处理,接着处理器映射器返回一个处理器执行连,然后到处理器适配器上去处理,处理器适配器执行handler,然后返回一个ModelAndView,然后再回到前端控制器,请求解析视图,返回view对象,渲染视图,最后相应用户。
springmvc简单的参数传递
@RequestParam
传递简单的参数,第一个用途是,当传的参数名不相同的时候;第二个用途,可以限制必须传递参数,第三个用途是,设置默认的传递参数。
传递pojo对象
传递包装的pojo
要点:通过点(.)传递属性。
标签:控制器,http,springMVC,www,springframework,学习,springmvc,笔记,org From: https://blog.51cto.com/u_15812686/5741677