SpringMVC--从基础到...

1.SpringMVC基本概述

Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一

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

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

用SpringMVC代替web层

MVC是一种设计模式:

M:model 模型:用来封装数据,比如javabean

V:view 视图:用来显示数据

C:controller:用于接收前端页面发送的请求,然后调用servlet层处理,拿到处理结果并将结果返回给前端界面

SpringMVC相当于MVC中的C和V!

支持 REST 风格的 URL 请求

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

2.建一个最基础的SpringMVC项目

步骤:

– 导 jar 包

– 在 web.xml 中配置 DispatcherServlet

– 加入 Spring MVC 的配置文件
– 编写处理请求的处理器,并标识为处理器

– 编写视图

代码实现:

① 导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

②  配置 .xml文件

   配置 DispatcherServlet :DispatcherServlet 默认加载 /WEB- INF/<servletName-servlet>.xml 的 Spring 配置文件,去Open Type中查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>
		<!-- 用于制定SpringMVC配置文件的路径以及名称 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<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>

新建springmvc.xml文件

点击Next输入文件名springmvc.xml,再点Next,在以下三项前打勾√

在Open Type中查找 InternalResourceViewResolver,获得其全路径

在springmvc.xml文件中添加

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

在web.xml文件中可以不设置初始化参数,也就是不写<init-param>

但是要将spring.xml文件改名为 springDispatcherServlet-servlet.xml,并移动到WEB-INF目录下

③ 编写jsp页面和controller类

@RequestMapping(value="/sayHello",method=RequestMethod.GET,params={"username","pwd!=123"})
public String SUCCESS(){
	System.out.println("111");
	return "success";
}

@RequestMapping()可以定义在类上,也可以定义在方法上

–     类定义处:提供初步的请求映射信息。相对于 WEB 应用的根目录

–     方法处:提供进一步的细分映射信息。相对于类定义处的 URL

@RequestMapping 的 value、method、params 及 heads 分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射 更加精确化

params表示及含义

–     param1: 表示请求必须包含名为 param1 的请求参数

–     !param1: 表示请求不能包含名为 param1 的请求参数

–     param1 != value1: 表示请求可以不包含名为 param1 的请求参数,若包含的话其值不能为 value1

如上例代码中,必须要有’username‘参数,’pwd‘参数可有可无,若有的话不能为‘123’

使用 @RequestMapping 映射请求,Ant 风格资源地址支持 3 种匹配符:

–     ?:匹配文件名中的一个字符

–     *:匹配文件名中的任意字符

–     **:** 匹配多层路径

@RequestMapping 还支持 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

④ 运行

3.REST :Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。

  它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用.

HTTP 协议里面,四个表示操作方式的动词:

    GET 用来获 取资源

    POST 用来新建资源

    PUT 用来更新资源

    DELETE 用来删除资源

  

<a href="${pageContext.request.contextPath }/getOrderById/1">okok</a>

<form action="${pageContext.request.contextPath }/postOrderById/2" method="post">
	<input type="submit" value="Submit"/>
</form>

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

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

超链接<a>是get请求,浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。需要在form表单中添加隐藏域,name为‘method‘,value为’POST/DELETE‘

同时需要在web.xml文件中配置 HiddenHttpMethodFilter

  <!-- 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>
@RequestMapping(value="/getOrderById/{id}",method=RequestMethod.GET)
public String getOrderById(@PathVariable(value="id") Integer id){
	//调用service层方法
	System.out.println(id);
	return SUCCESS;
}

@RequestMapping(value="/postOrderById/{id}",method=RequestMethod.POST)
public String postOrderById(@PathVariable(value="id") Integer id){
	//调用service层方法
	System.out.println(id);
	return SUCCESS;
}

@RequestMapping(value="/putOrderById/{id}",method=RequestMethod.PUT)
@ResponseBody
public String putOrderById(@PathVariable(value="id") Integer id){
	//调用service层方法
	System.out.println(id);
	return SUCCESS;
}

@RequestMapping(value="/deleteOrderById/{id}",method=RequestMethod.DELETE)
@ResponseBody
public String deleteOrderById(@PathVariable(value="id") Integer id){
	//调用service层方法
	System.out.println(id);
	return SUCCESS;
}

因为在tomcat8.0中不支持PUT和DELETE方法,所以需要@ResponseBody,否则405错误

4.使用@RequestParam绑定请求参数值

@RequestMapping(value="/testRequestParam",method=RequestMethod.POST)
public String testRequestParam(@RequestParam(value="username") String name,@RequestParam(value="password",required=false,defaultValue="123456789") String password){
	System.out.println(name+"---"+password);
	return SUCCESS;
}

在jsp页面

<form action="${pageContext.request.contextPath }/testRequestParam" method="post">
	Username:<input type="text" name="username"/>
	Password:<input type="password" name="password"/>
	<input type="submit" value="Submit"/>
</form>

@RequestParam可以从jsp页面获取参数

–     value:参数名,与请求参数的name属性值一致

–     required:是否必须输入值,默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常

–     defaultVault:不传值时的默认值,传值后将不再显示默认值

5.POST请求乱码问题

上个例子如果输入中文的话,会出现乱码问题

所以需要在web.xml文件中配置<filter>

<!-- 解决中文乱码问题 -->
  <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>
时间: 2024-10-08 18:27:44

SpringMVC--从基础到...的相关文章

springMVC1 springmvc的基础知识

springmvc第一天 springmvc的基础知识 springmvc课程安排: 第一天: 基础知识 springmvc框架(重点) mvc在b/s系统中应用方式 springmvc框架原理(DispatcherServlet前端控制器(类似于struts的过滤器).处理器映射器.处理器适配器.视图解析器) springmvc入门程序 需求:商品列表查询 常用的处理器映射器,处理器适配器 注解的处理器映射器,处理器适配器用于注解开发(重点) 3 注解开发基础 常用的注解使用 参数绑定 自定义

SpringMVC常用基础知识

常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解 @RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来: 还可以标注在方法签名处,以便进一步对请求进行分流 配套的属性有: value 需要跳转的地址 method 基于RestFul的跳转参数,有RequestMethod.get post p

springmvc入门基础之注解和参数传递

一.SpringMVC注解入门 1. 创建web项目2. 在springmvc的配置文件中指定注解驱动,配置扫描器 Xml代码   <!-- mvc的注解驱动 --> <mvc:annotation-driven /> <!--只要定义了扫描器,注解驱动就不需要,扫描器已经有了注解驱动的功能 --> <context:component-scan base-package="org.study1.mvc.controller" /> &l

(转)SpringMVC常用基础知识

源地址:http://blog.sina.com.cn/s/blog_a43be7b001011lx9.html 常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解 @RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来: 还可以标注在方法签名处,以便进一步对请求进行分流 配套的属性有: valu

0105 springMVC开发基础

背景 已经明确了MVC的思想和SpringMVC的基本流程,下面就都具体的mvc开发细节知识了. @RequestMapping springMVC核心流程中,启动阶段会把注解@RequeestMapping注解所配置的内容保存到HandlerMapping中,然后等待请求到达. 看一下源码: 简单分一下类: 方法 说明 name,value,path 标识控制器方法的访问url,可以配置多个 method 处理的方法,http的标准方法,比如get,post等 params 参数 header

》》HTTP 方法:GET 对比 POST《《Java:SpringMVC:基础知识:Http协议:000()

Word发布到博客园:HTTP 方法:GET 对比 POST http://www.w3school.com.cn/tags/html_ref_httpmethods.asp 两种最常用的 HTTP 方法是:GET 和 POST. 什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. Web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端. 举例:客户端(浏览器)向服务器提交 HTTP

springMVC基础篇

 对于一个不懂技术的人来说springMVC是什么呢?有人会说:"春天里的MVC"这也许就是春天里的几个字母,不错在我没有接触java框架的时候留给我的记忆就是这样的.那么现在接触到了就让我们来好好讨论一下springMVC到底是什么吧? 一.是什么? 百度百科上这样解释:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring WebFlow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 M

SpringMVC基础配置(二)

上一张:SpringMVC环境搭建(一) 今天我们来说说SpringMVC的基础配置.目前越来越多的主流框架都支持注解,同时我们无敌的Spring也支持基于注解的"零配置". 注解相比XML的优势:它可以充分利用Java的反射机制获取类中的结构信息,这些信息可以有效减少配置的工作,注释和Java代码位于一个文件中,更加利于维护. 注意:必须要在Spring2.5版本之后才可以使用注解方式. 注解方式将Bean的定义信息和Bean的实现类结合在一起,Spring提供的注解有. @Comp

SpringMVC框架入门配置 IDEA下搭建Maven项目

,初衷:本人初学SpringMVC的时候遇到各种稀奇古怪的问题,网上各种技术论坛上的帖子又参差不齐,难以一步到位达到配置好的效果,这里我将我配置的总结写到这里供大家初学SpringMVC的同僚们共同学习使用! 关于SpringMVC的介绍我就不在此赘述了,想必每一个配置Spring的人都已经或多或少了解过一些SpringMVC的基础知识,可能有的人用的myeclipse或者eclipse进行项目的搭建,我会告诉你这里步骤是很相似的,在myeclipse里面需要建立web项目,然后加入Spring

springMVC学习笔记(二)-----注解和非注解入门小程序

最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置,但全注解配置也是由非注解发张而来的.所以,今天就谈谈springMvc最基础的注解和非注解的配置以及开发模式. 一:基础环境准备 1.功能需求:一个简单的商品列表查询 2.开发环境:eclipse,java1.7,springmvc版本:3.2 3.springMvc所需jar包(一定包括spri