有疑问可以参考博主其他关于spring mvc的博文

此时直接进行代码的实现

一般的步骤:

-加入jar包

-配置DispatcherServlet

-加入Spring MVC配置文件

-编写请求的处理器

-视图

创建web工程:

加入jar包

web.xml文件

 <!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置初始化参数 -->
<!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->
<!--
实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.
默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
简单的列子:在WEB-INF文件夹下springDispatcherServlet-servlet.xml,init就不需要在配置了
-->

<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

springmvc.xml以及所需要的类

springmvc.xml

<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.MrChengs.A"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>

</bean>

HelloWord.java

//自动扫描
@Controller
public class HelloWord {
//返回值通过视图解析器解析为实际的物理逻辑视图,InternalResourceViewResolver解析器
//<property name="prefix" value="/WEB-INF/views/"></property>
//<property name="suffix" value=".jsp"></property>
//通过前缀 prefix + 返回值 + 后缀
// == /WEB-INF/views/ + success + .jsp //使用注解来映射请求url
@RequestMapping("/helloword")
public String say(){
System.out.println("hello");
return "success";
}
}

  

这里说明需要在路径下建立相关的 文件以及路径:

success.jsp
主要用于成功后的显示
<body>
<h4>success</h4>
</body>

在index.jsp

注意路径在href里面
  <body>
<a href="helloword">helloword</a>
</body>

得到:注意看请求的url


@RequestMapping
->Spring MVC 使用@RequestMapping注解为控制器指定可以处理哪些URL请求
->在控制器的类定义及方法出都可以标注
 
-->类定义处:提供初步的请求映射信息。相对于WEB应用的根目录
-->方法处:提供进一步的细分映射信息,相对于类定义处的URL
                   若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录
 
-->DispatcherServlet截获请求后,就通过控制器上 @RequestMapping 提供的映射信息确定请求对应的方法
测试在类定义附加方法处
 

TestRequestMapping.java
此时的路径是:类定义+方法
@Controller
@RequestMapping("/springmvc")
public class TestRequestMapping { @RequestMapping("/RequestMapping")
public String RequestMapping(){
System.out.println("RequestMapping");
return "success";
}
}

在index,jsp中:

<a href="springmvc/RequestMapping">testMethod</a>

在运行之后点击超链接,控制台会显示,主要看路径:

具体可看图的解释:


映射请求参数、请求方法或请求头
->@RequestMapping 除了可以使用请求 URL 映射请求外,
    还可以使用请求方法、请求参数及请求头映射请求
 
->@RequestMapping 的 value、method、params 及 heads
    分别表示请求 URL、请求方法、请求参数及请求头的映射条
    件,他们之间是与的关系,联合使用多个条件可让请求映射
    更加精确化
 
->params 和 headers支持简单的表达式:
– -param1: 表示请求必须包含名为 param1 的请求参数
– -!param1: 表示请求不能包含名为 param1 的请求参数
– -param1 != value1: 表示请求包含名为 param1 的请求参数,但其值
     不能为 value1
– -{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2
     的两个请求参数,且 param1 参数的值必须为 value1
method:
TestRequestMapping.java
可以为post,get......
     @RequestMapping(value="/RequestMethod",method=org.springframework.web.bind.annotation.RequestMethod.POST)
public String RequestMethod(){
System.out.println("RequestMethod");
return "success";
}

index.jsp中:

 <form action="springmvc/RequestMethod" method="post">
<input type="submit" value="submit">
</form>
点击运行之后的按钮:
如果此时强制使用get会报错

 params

TestRequestMapping.java
     @RequestMapping(value="/paramsAndHeaders",
params={"user","age!=20"})
public String ParamesHeaders(){
return "success";
}

index.jsp

<a href="springmvc/paramsAndHeaders">paramsAndHeaders</a>

此时user属性不写或者age=20,都会报404错误

 header:

可以使用params和header更加精确的映射请求,
params和headers支持加单的表达式

使用 @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/createUserer: 匹配
      /user/createUseraa、/user/createUserbb 等 URL
 
简单的小实例:
TestRequestMapping.java
     @RequestMapping("/antpath/*/ant")
public String AntPath(){
return "success";
}

  index.jsp:

<a href="springmvc/antpath/mvcmmc/ant">Ant</a>

  


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

TestRequestMapping.java

     @RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value="id") int id){
System.out.println("testPathVariable:" + id);
return "success";
}

index.jsp

<a href="springmvc/testPathVariable/20">testPathVariable</a>

REST
 
REST:即 Representational State Transfer。(资源)表现层状态转化。是目前
最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,
所以正得到越来越多网站的采用
 
资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它
可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。
可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要
获取这个资源,访问它的URI就可以,因此 URI 即为每一个资源的独一无二的识
别符。
 
表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层
(Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格
式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。
 
状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一
次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器
端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“
状态转化”(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 请求。

需要在web.xml配置:

 <!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter.class -->
<!-- 可以把POST请求转为delete/post -->
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

java类中:

@RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.GET)
public String testGet(@PathVariable(value="id") int id){
System.out.println("GET:" + id);
return "success";
} @RequestMapping(value="/test",method=org.springframework.web.bind.annotation.RequestMethod.POST)
public String testPOST(){
System.out.println("POST:");
return "success";
} @RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.DELETE)
public String testDelete(@PathVariable(value="id") int id){
System.out.println("DELETE:" + id);
return "success";
} @RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.PUT)
public String testPUT(@PathVariable(value="id") int id){
System.out.println("PUT:" + id);
return "success";
}

index.jsp

   <a href="springmvc/test/1">GET</a>
<br>
<form action="springmvc/test" method="post">
<input type="submit" value="POST">
</form>
<br>
<form action="springmvc/test/1" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="DELETE">
</form>
<br>
<form action="springmvc/test/1" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="PUT">
</form>

  


映射请求参数 & 请求参数
 
请求处理方法签名
 
Spring MVC 通过分析处理方法的签名,将 HTTP 请求信
息绑定到处理方法的相应人参中。
 
 Spring MVC 对控制器处理方法签名的限制是很宽松的,
几乎可以按喜欢的任何方式对方法进行签名。
 
必要时可以对方法及方法入参标注相应的注解(
@PathVariable@RequestParam、@RequestHeader 等)、Spring
MVC 框架会将 HTTP 请求的信息绑定到相应的方法入参
中,并根据方法的返回值类型做出相应的后续处理
 
使用 @RequestParam 绑定请求参数值
 
在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法
– ---value:参数名
– --- required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
 
TestRequestMapping.java
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="username",required=false) String username,
@RequestParam(value="age") int age){
System.out.println("username:" + username + "--age:" + age);
return "success";
}

index.jsp

<a href="springmvc/testRequestParam?username=MrChang&age=22">testRequestParam</a>

  


@RequestHeader 绑定请求报头的属性值
请求头包含了若干个属性,服务器可据此获知客户端的信
息,通过 @RequestHeader 即可将请求头中的属性值绑
定到处理方法的入参中
aaarticlea/png;base64,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" alt="" />
 
TestRequestMapping.java
     @RequestMapping("/RequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept")String l){
System.out.println(l);
return "success";
}

index.jsp

<a href="springmvc/RequestHeader">RequestHeader</a>

  


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

TestRequestMapping.java

     @RequestMapping("/testpojo")
public String testtestpojo(User user){
System.out.println(user);
return "success";
}

User.java

public class User {
private String username;
private String password;
private String email; private Address address;
}

Address.java

public class Address {
private String city;
}

index.java

<form action="springmvc/testpojo" method="post">
username:<input type="text" name="username">
<br>
password:<input type="password" name="password">
<br>
email:<input type="text" name="email">
<br>
city:<input type="text" name="address.city">
<input type="submit" value="submit">
</form>

 使用 Servlet API 作为

TestRequestMapping.java

     @RequestMapping("/testServletAPI")
public String testServletAPI(HttpServletRequest request,
HttpServletResponse response
){
System.out.println("request:" + request + "-response:" + response);
return "success";
}
     <a href="springmvc/testServletAPI">testServletAPI</a>
request:org.apache.catalina.connector.RequestFacade@7a434d60-
response:org.apache.catalina.connector.ResponseFacade@addea0e

  

springmvc(3)注解的更多相关文章

  1. SpringMVC常用注解實例詳解3:@ResponseBody

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  2. SpringMVC常用注解實例詳解2:@ModelAttribute

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  3. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  4. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  5. springMvc的注解注入方式

    springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着 ...

  6. SpringMVC全注解

    SpringMVC全注解不是你们那么玩的 前言:忙了段时间,忙得要死要活,累了一段时间,累得死去活来. 偶尔看到很多零注解配置SpringMVC,其实没有根本的零注解. 1)工程图一张: web.xm ...

  7. SpringMVC常用注解@Controller,@Service,@repository,@Component

    SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...

  8. 一 : springmvc常用注解

    springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...

  9. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  10. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

随机推荐

  1. [javaEE] EL表达式调用java方法

    1.新建个类,类里面定义静态方法 package com.tsh.utils; import java.net.URLEncoder; public class ELFunc { public sta ...

  2. centos7关于防火墙的操作

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld  停止: systemctl disab ...

  3. ajax提交手机号去数据库验证并返回状态值

    <script type="text/javascript"> $(function(){ $('.agree_regi').click(function(){ var ...

  4. 爬取地图列表并下载-node.js

    var fs = require('fs'); var request = require('request'); var cheerio = require('cheerio'); var url ...

  5. OpenStack系列

    一.概述 云计算介绍 OpenStack各组件详解和通信流程 二.keystone系列 三.glance系列 四.nova系列 虚拟化介绍 kvm介绍 五.neutron系列 六.horizon系列 ...

  6. linux 共享目录

    1. 文件上传遇到多物理机多实例时,怎么处理呢? ftp, 文件同步, 目录共享 这里用目录共享来一把. 2. 操作流程 物理机两台 192.168.1.88  192.168.1.166 2.1 服 ...

  7. 视差滚动-background-attachement

    之前项目中没有涉及到视觉滚动的网站,但是毕竟是一种常用的网站类别,不得不了解.实现方法很简单,做一下简单的分析... 概述:滚动视差是指多层背景以不同的速度移动,形成立体的运动效果,来带非常出色的视觉 ...

  8. 项目经验:GIS<MapWinGIS>建模第七天

    终天完成了管网地图的附加功能..实现了了管网与地图结合

  9. Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)

    Python爬虫教程-12-爬虫使用cookie(上) 爬虫关于cookie和session,由于http协议无记忆性,比如说登录淘宝网站的浏览记录,下次打开是不能直接记忆下来的,后来就有了cooki ...

  10. 安装busybox玩玩

    到http://www.busybox.net/downloads/binaries/下载放到sdcard然后adb shellsumount -o remount,rw -t yaffs2 /dev ...