博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC简单介绍与REST风格的URL
阅读量:4102 次
发布时间:2019-05-25

本文共 4711 字,大约阅读时间需要 15 分钟。

Spring MVC

Spring MVC属于SpringFrameWork的后续产品。Spring框架提供了构建WEB应用程序的全功能MVC模块。
使用Spring可插入的MVC框架,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架。
Spring MVC 3.0新特性
支持REST风格的URL
添加更多注解,可完全注解驱动
引入HTTP输入输出转换器(HttpMessageConverter)
和数据转换、格式化、验证框架无缝集成
对象静态资源处理提供特殊支持
更加灵活的控制器方法签名,可完全独立于ServletAPI
SpringMVC开发环境的简单搭建
需要加载的依赖
org.springframework
spring-webmvc
4.2.0.RELEASE
springmvc最核心的类是DispatcherServlet
我们需要将它配置在web.xml    
mvc
org.springframework.web.servlet.DispatcherServlet
mvc
/
通过<url-patten>指定的路径,进入DispatcherServlet类里的service方法去处理
我们还需要在WebRoot下配置一个xml文件
配置好后我们就可以发布到tomcat
访问index
SpringMVC开发结构
package com.baobaotao.web;...@Controller                           ① 将UserController变成一个Handler@RequestMapping(“/user”)   ②指定控制器映射的URLpublic class UserController {	@RequestMapping(value = “/register”) ③处理方法对应的URL,相对于                                                                                    ②处的URL	public String register() {	          return “user/register”; ④返回逻辑视图名	}}
@RequestMapping支持URL
@RequestMapping不但支持标准的URL,还支持Ant风格(即?、*和**的字符,参见3.3.2节的内容)的和带{xxx}占位符的URL。以下URL都是合法的:
/user/*/createUser
   
匹配/user/aaa/createUser、/user/bbb/createUser等URL。
/user/**/createUser
匹配/user/createUser/user/bbb/aa/createUserURL
/user/createUser??
匹配/user/createUseraa、/user/createUserbb等URL。
/user/{userid}
匹配/user/123/user/abcURL
/user/**/{userid}
匹配/user/aa/bb/123、/user/aa/abc等URL。
/company/{companyid}/user/{userid}/detail
匹配/company/123/user/313/detaiURL
Restful风格设计概念
REST,即Representational State Transfer的缩写。“表现层状态转化”。研究计算机科学两大前沿---软件和网络---的交叉点
“表现层”其实指的是“资源”(Resources)的“表现层”。所谓“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具有信息。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
restful URI的设计不该包含动词。因此“资源”表示一种实体,所以应该是名词,URI不应该有动词,某个URI是/arcticle/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是//arcticle/1,然后用GET方法表示show.
优质WEB框架五条关键原则列举如下:
为所有“事物”定义ID
将所有事物连接在一起(超链接)
使用标准方法(Get、Post、Delete、Put)
资源多重表述(针对不同的需求提供资源多重表述 arcticle/1)
无状态通信(节省服务器内存)
REST是设计风格而不是标准  目的只是让URI看起来更简洁使用,是资源状态的一种表达,资源时由URI来指定,对资源的操作包括获取、创建、修改、删除资源这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。通过操作资源的表现形式来操作资源。
常用操作:
GET 获取
POST 提交
PUT 更新
DELETE 删除
常用的URI风格例如:
http://write.blog.csdn.net/postlist/0/all/draft
SpringMVC配置
mvc
org.springframework.web.servlet.DispatcherServlet
mvc
/
SpringMVC限定请求方法
请求方法,在HTTP中这被叫做动词(varb),除了两个大家熟知的(GET和POST)之外,标准方法集合中还包含PUT、DELETE、HEAD和OPTIONS。这些方法的含义连同行为许诺都一起定义在HTTP规范之中,一般浏览器只支持GET和POST方法。
示例:
查询
创建一个jsp
    
创建一个@Controller层的类
package cn.et.springmvc.lession01;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/** * SpringMVC中一个路径和方法的映射叫做一个action(动作) * @author Administrator * */@Controllerpublic class HelloController{	@RequestMapping("/query")	public String query(String name,HttpServletResponse response) throws Exception{		response.setContentType("text/html;charset=UTF-8");		PrintWriter out = response.getWriter();		out.println(name+":查询");		return null;	}}
访问index并查询
新增
    
@RequestMapping(value="/add/{id}",method=RequestMethod.POST)	public String add(@PathVariable(value="id")String id,String name,HttpServletResponse response) throws Exception{		response.setContentType("text/html;charset=UTF-8");		PrintWriter out = response.getWriter();		out.println(id+"="+name+":添加");		return null;	}
因为是修改所以我们需要在web.xml里配置一个请求限定的
myFile
org.springframework.web.filter.HiddenHttpMethodFilter
myFile
/*
通过POST请求的_method参数指定请求方法,HiddenHttpMethodFilter动态更改HTTP头信息。
修改
    
@RequestMapping(value="/update/{id}",method=RequestMethod.PUT)	public String update(@PathVariable(value="id")String id,String name,HttpServletResponse response) throws Exception{		response.setContentType("text/html;charset=UTF-8");		PrintWriter out = response.getWriter();		out.println(id+"="+name+":修改");		return null;	}
删除
    
@RequestMapping(value="/delete",method=RequestMethod.DELETE)	public String delete(String name,HttpServletResponse response) throws Exception{		response.setContentType("text/html;charset=UTF-8");		PrintWriter out = response.getWriter();		out.println(name+":删除");		return null;	}
个URI就设计错了,正确的R写法应该是//
arc
你可能感兴趣的文章
gcc 编译顺序问题
查看>>
基于flask的在线笔记共享管理系统【10】(密码加密passlib)
查看>>
操作系统知识点总结(22考研408)【1--绪论】
查看>>
Cygwin模拟器安装及案例使用
查看>>
操作系统模拟实验
查看>>
Spring-Cloud-Finchley | 服务注册与发现 Eureka
查看>>
Spring-Cloud-Finchley | 负载均衡 RestTemplate+Ribbon
查看>>
Spring-Cloud-Finchley | 声明式服务调用 Feign
查看>>
Spring-Cloud-Finchley | 熔断 Hystrix
查看>>
Spring-Cloud-Finchley | 路由网关 Zuul
查看>>
Spring-Cloud-Finchley | 配置中心 Config
查看>>
Kong 网关 | 快速安装与入门
查看>>
PostgreSQL 安装与入门
查看>>
Kong 网关 | Rate Limiting 限流
查看>>
Kong网关 | 「Kong & Prometheus & Grafana」 实时监控
查看>>
Kong 网关 | Service
查看>>
Kong 网关 | Route
查看>>
自媒体的未来
查看>>
写作的好处
查看>>
分布式的冰与火 | 分布式配置中心 Apollo (CentOS安装)
查看>>