SpringMVC基本知识及配置,参数的传递

SpringMVC:
1.)SpringMVC和Spring的关系:
软件开发的三层架构: web层【表示层、表现层】---->Service层---->Dao[DataBase Access Object]---->数据库!
SpringMVC实际上是Spring的一个子模块,我们用SpringMVC来代替这个JavaWEB部分!
MVC:也是一种设计模式:M:Model【模型】-->V[View]--->C[Controller]!
Model用来封装数据的,View:用来显示数据 Controller:用于接收前端页面发送的请求,然后调用Service层处理,拿到处理结果,将该结果返回给前端页面!

SpringMVC:相当于MVC架构中的C以及V!

JavaEE-->J2EE

2.)SpringMVC有什么优势?
Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一。

Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架。

Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。

支持 REST 风格的 URL 请求。
GET POST PUT DELTE

采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性.

目前主流的开发软件,说白了,大家都在用!

3.)SpingMVC是基于SpingMVC4.x

4.)SpringMVC的HelloWorld快速入门!
1.加入JAR包:
–commons-logging-1.1.3.jar
–spring-aop-4.0.0.RELEASE.jar
–spring-beans-4.0.0.RELEASE.jar
–spring-context-4.0.0.RELEASE.jar
–spring-core-4.0.0.RELEASE.jar
–spring-expression-4.0.0.RELEASE.jar
–spring-web-4.0.0.RELEASE.jar
–spring-webmvc-4.0.0.RELEASE.jar

2.配置前端控制器【DispatcherServlet】
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<!--向服务器注册前端控制器! -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<!--DispatcherServlet指的是SpringMVC的前端控制器!,给服务器使用,创建servlet对象! -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数contextConfigLocation用于指定SpringMVC配置文件的路径以及名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 数字0或者大于0的数字表示的是:在服务器启动的时候创建Servlet对象,而不是第一次访问的时候创建
小于0的数字指的是:在第一次访问的时候创建Servlet对象.
在数字大于O的情况下,数字越小,优先级越高!
-->
<load-on-startup>1</load-on-startup>
</servlet>

<!-- Map all requests to the DispatcherServlet for handling -->
<!-- 用 servlet-mapping指定请求映射的路径-->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- 用url-pattern指定拦截 的请求路径! -->
<url-pattern>/</url-pattern>
</servlet-mapping>

3.创建SpringMVC的配置文件并添加要扫描的包
注意:1.创建SpringMVC配置文件的名字要和上面在web.xml文件中指定的名字一致!
2.我们创建SpringMVC配置文件的时候使用的是Spring Bean Configuration File创建的,不是XML!

<!-- 配置SpingMVC容器要扫描的包! -->
<context:component-scan base-package="com.neuedu.controller"></context:component-scan>

4.在springMVC扫描的包下创建控制器类[Controller/Handler],注意要加入@Controller注解

/**
* 我们通过@RequestMapping做请求URL的映射!
* @return
*/
@RequestMapping("/sayHello")
public String sayHello(){
return "/WEB-INF/views/success.jsp";
}

注意:在类的方法上我们使用的是@RequestMapping,然后在括号里指定请求url的请求路径!

5.创建页面!

注意:1.当我们不用init-param指定springMVC配置文件的路径好位置的时候,SpringMVC默认会去
/WEB-INF/<servlet-name>-servlet.xml

2.配置视图解析器

<!--InternalResourceViewResolvers 是视图解析器 ,它会将逻辑视图转换成实际的物理视图,做一个转发操作!
也就是说具体步骤:prefix + 方法的返回值 + suffix-->
<!-- /WEB-INF/views/success.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

3.请求一个SpringMVC的流程!

5.)使用 @RequestMapping 映射请求
?Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
?在控制器的类定义及方法定义处都可标注

@RequestMapping
– 类定义处:提供初步的请求映射信息。相当于当前 WEB 应用的根目录
– 方法处:提供进一步的细分映射信息。相对于类定义处的 URL。
若 类定义处未标注 @RequestMapping,则方法处标记的 URL 相当于当前 WEB 应用的根目录
若 类定义处标注 @RequestMapping,则方法处标记的 URL 相对于类定义处的@RequestMapping而言的!

DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。

映射请求参数、请求方法或请求头
[email protected] 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求
[email protected] 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射 更加精确化。

params 和 headers支持简单的表达式:
– param1: 表示请求必须包含名为 param1 的请求参数
– !param1: 表示请求不能包含名为 param1 的请求参数
– param1 != value1: 表示请求包含名为 param1 的请求参数,但其值 不能为 value1
–{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1!

Method:GET / POST /PUT /DELETE

使用 @RequestMapping 支持Ant风格的请求URL!
? Ant 风格资源地址支持 3 种匹配符:
– ?:匹配文件名中的一个字符
– *:匹配文件名中的任意多个任意字符[0个字符除外!]
– **:** 匹配多层路径

[email protected] 还支持 Ant 风格的 URL:
–/user/*/createUser: 匹配
/user/aaa/createUser、/user/bbb/createUser 等 URL
–/user/**/createUser: 匹配
/user/createUser、/user/aaa/bbb/createUser 等 URL
–/user/createUser??: 匹配
/user/createUseraa、/user/createUserbb 等 URL

@PathVariable 映射 URL 绑定的占位符
带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过
@PathVariable("xxx") 绑定到操作方法的入参中,需要注意的是:该注解的value属性值要与占位符保持一致。

6.)REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。
它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用.
HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
它们分别对应四种基本操作:
GET 用来获 取资源,
POST 用来新建资源,
PUT 用来更新资源,
DELETE 用来删除资源。

示例:

–/order/1 HTTP GET :得到 id = 1 的 order
–/order/1 HTTP DELETE:删除 id = 1的 order
–/order/1 HTTP PUT:更新id = 1的 order

–/order HTTP POST:新增 order

?HiddenHttpMethodFilter:浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支 持,Spring3.0 添加了一个过滤器,可以将这些请求转换 为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。

POST请求如何转化为put请求和delele请求?
1.在web.xml文件中配置:

<!-- HiddenHttpMethodFilter过滤器可以将POST请求转化为put请求和delete请求! -->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2.在表单域中需要携带一个name值为_method,value值为put或者delete的参数,如下所示:

<form action="${pageContext.request.contextPath }/order/1" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="Submit"/>
</form>
<form action="${pageContext.request.contextPath }/order/1" method="post">
<input type="hidden" name="_method" value="delete"/>
<input type="submit" value="Submit"/>
</form>

7.)@RequestParam可以接收请求的参数,相当于Servlet的getParameter()方法!
注意:要把@RequestParam和@PathVariable区分开:
三个默认属性:
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

8.)@RequestHeader:获取请求头信息,默认属性:
value:这个字段要与请求参数的name属性值一致!
required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

9.)针对POST请求乱码的处理:
在web.xml文件中加上CharacterEncodingFilter

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

10. MVC 的 Handler 方法可以接受哪些 ServletAPI 类型的参数
HttpServletRequest
HttpServletResponse
HttpSession

11.使用 POJO 对象绑定请求参数值
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹 配,自动为该对象填充属性值。支持级联属性。 如:dept.deptId、dept.address.tel 等

12.处理模型数据
Spring MVC 提供了以下几种途径输出模型数据:
–ModelAndView: 处理方法返回值类型为 ModelAndView时, 方法体即可通过该对象添加模型数据
–Map 及 Model、ModelMap: 入参为 org.springframework.ui.Model、org.springframework.ui. ModelMap 或 java.uti.Map 时,处理
方法返回时,Map 中的数据会自动添加到模型中。

无论我们的返回值是String类型还是ModelAndView类型,SpringMVC框架执行目标Handler方法之后都会将返回值解析为ModelAndView;
我们放入到Map或者Model、ModelMap中的数据都会放入ModelAndView对象中,作为MOdel使用!

13.关于重定向
一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理
如果返回的字符串中带 forward: 或 redirect: 前缀 时,SpringMVC 会对他们进行特殊处理:将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理
–redirect:/success.jsp:会完成一个到 success.jsp 的重定向的操作
–forward:/success.jsp:会完成一个到 success.jsp 的转发操作

可以在spingmvc配置文件中配置 <mvc:view-controller path="/j1sp" view-name="success"/>标签,就可以让我们的请求不经过Controller,直接进入另一个目标页面!
<!-- 但是此时原来访问正常的@RequestMapping URL现在却不能正常访问了,如果想正常访问,需要加入<mvc:annotation-driven>该标签-->
<mvc:annotation-driven></mvc:annotation-driven>

–@SessionAttributes: 将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性
– @ModelAttribute: 方法入参标注该注解后, 入参的对象 就会放到数据模型中

时间: 2024-08-07 21:17:33

SpringMVC基本知识及配置,参数的传递的相关文章

SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

一.参数的传递 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica } 1.简单的参数传递 1 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ 2 * value:传入的参数名,required:是否必填,defaultValue:默认值 3 * } 4 */ 5 @RequestMapping("itemEdit") 6 public ModelAndView itemEdit(@R

Springmvc中 同步/异步请求参数的传递以及数据的返回

注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 (1).使用基本类型,或引用类型进行接受: @RequestMapping(value="/select") PublicString  select(String name,int age,Model model){ // 这样这里的name,age 就是我们前台传递的参数,也是我们Ja

script自定义属性传递配置参数

刚刚开始正式的职业生涯,最近几天在给公司做统一的头部js,想到了一个通过script自定义属性传递配置参数的方法. 有时候我们编写了一个js插件,要使用该插件需要先在html中引入该插件Js,然后再添加一个script标签,在里面调用.如一个图片切换的插件.其代码大致如下: $.fn.picSwitch = function(option){ //这里是图片切换的代码 } 再引入了该插件后,需要再在另外的script标签内加入调用代码 $('#pic').picSwitch({ 'speed'

SpringMVC基础知识

一.Spring MVC简介 1.1Spring MVC工作流程 映射器:主要是根据浏览器上输入的url来映射所有满足要求的Handle(控制器类) 适配器:主要是决定调用哪个Handler来实现具体的业务逻辑 1.2Spring MVC VS Struts2 1)springmvc的入口是一个servlet,即前端控制器: struts2入口是一个filter过虑器,即前端过滤器, 2)springmvc是基于方法开发(控制器类是单例的,不可能维护实体变量),传递参数是通过方法形参,可以设计为

网站前端_KindEditor.基础入门.0001.KindEditor_3.4.2配置参数?

初始方式: 说明: 在快速入门中使用KE.show({ .. .})来初始化了一个编辑器,具体进入js/kindeditor.js下可以看到KE对象下的show方法先调用了KE的init方法然后又调用了其event事件对象的ready方法,内部其实是调用的KE的create方法,传递的参数为args的id属性,所以可通过2种方式来初始化编辑器 # 方式一 : # 方式二 : 注意: 无论使用哪种方式初始化编辑器,都需要传递配置对象{ ... },配置对象中id属性是必须配置的,其它的属性默认采用

如何利用 AVDictionary 配置参数(转)

本文是我的 FFMPEG Tips 系列的第五篇文章,准备介绍下 ffmpeg 提供的一个非常好用的健值对工具:AVDictionary,特别是对于没有 map 容器的 c 代码,可以充分利用它来配置和定义播放器的参数,ffmpeg 本身也有很多 API 通过它来传递参数. 1.  AVDictionary 的用法简介 AVDictionary 所在的头文件在 libavutil/dict.h,其定义如下: [cpp] view plain copy print? struct AVDictio

springmvc,mybatis,shiro综合配置示例

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt

@requesMapping的可配置参数和标注的处理方法的可选参数

使用@requesMapping标注的处理函数包括的可选参数,除了HttpServletRequest, HttpServletResponse, HttpSession这些web应用中常见的参数及之前提到过的@PathVariable外,还可以包括以下可选的参数,其中大部分参数的顺序没有特殊要求的. java.util.Locale 当前请求所属的区域设置. java.io.InputStream或java.io.Reader 用来读取request content,相当于 request.g

springmvc,mybatis,shiro综合配置示例【转】

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 htt