requestmapping,springmvc的注解有哪些
requestmapping,springmvc的注解有哪些详细介绍
本文目录一览: requestmapping什么意思
需求映射图
request mapping
请求映射
request 英[r??kwest] 美[r??kw?st]
n. 要求; 需要; 所请求的事物; 申请书;
vt. (下级对上级的) 请求; 请求得到; 索取; 邀请[常接不定式或从句];
[例句]Mr Dennis said he had requested access to a telephone.
丹尼斯先生说他已经请求使用电话。
[其他] 第三人称单数:requests 复数:requests 现在分词:requesting过去式:requested 过去分词:requested形近词: acquest bequest inquest
requestmapping注解里面的路径怎么写
requestmapping注解里面的路径怎么写可以尝试以下方法: 1.映射单个路径,@RequestMapping("/路径") 或 @RequestMapping(“路径”),可以有/也可以没有。 2.映射多个地址,多个地址要用 {“路径1”,“路径2”},@RequestMapping({”路径1",“路径2”})。 3.映射类路径和方法路径,可以在类上面也添加路径及所构成的形式为 /类路径/方法路径。
springmvc中@RequestMapping的参数consumes无效
简介:
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
示例:
1、value / method 示例
默认RequestMapping("....str...")即为value的值;
[java] view plaincopy
@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
private final AppointmentBook appointmentBook;
@Autowired
public AppointmentsController(AppointmentBook appointmentBook) {
this.appointmentBook = appointmentBook;
}
@RequestMapping(method = RequestMethod.GET)
public Map
get() {
return appointmentBook.getAppointmentsForToday();
}
@RequestMapping(value="/{day}", method = RequestMethod.GET)
public Map
getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) {
return appointmentBook.getAppointmentsForDay(day);
}
@RequestMapping(value="/new", method = RequestMethod.GET)
public AppointmentForm getNewForm() {
return new AppointmentForm();
}
@RequestMapping(method = RequestMethod.POST)
public String add(@Valid AppointmentForm appointment, BindingResult result) {
if (result.hasErrors()) {
return "appointments/new";
}
appointmentBook.addAppointment(appointment);
return "redirect:/appointments";
}
}
value的uri值为以下三类:
A) 可以指定为普通的具体值;
B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);
C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);
example B)
[java] view plaincopy
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
example C)
[java] view plaincopy
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
public void handle(@PathVariable String version, @PathVariable String extension) {
// ...
}
}
2 consumes、produces 示例
cousumes的样例:
[java] view plaincopy
@Controller
@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// implementation omitted
}
方法仅处理request Content-Type为“application/json”类型的请求。
produces的样例:
[java] view plaincopy
@Controller
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public Pet getPet(@PathVariable String petId, Model model) {
// implementation omitted
}
方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
3 params、headers 示例
params的样例:
[java] view plaincopy
@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
// implementation omitted
}
}
仅处理请求中包含了名为“myParam”,值为“myValue”的请求;
headers的样例:
[java] view plaincopy
@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
// implementation omitted
}
}
仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;
上面仅仅介绍了,RequestMapping指定的方法处理哪些请求,下面一篇将讲解怎样处理request提交的数据(数据绑定)和返回的数据。
springmvc的注解有哪些
spring mvc常用的注解:
个介绍。
@Controller
@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为
类名称开头字母小写,你也可以自己指定,如下
方法一:
@Controller
public class TestController {}
方法二:
@Controller("tmpController")
public class TestController {}
@RequestMapping
1.@RequestMapping用来定义访问的URL,你可以为整个类定义一个
@RequestMapping,或者为每个方法指定一个。
把@RequestMapping放在类级别上,这可令它与方法级别上的
@RequestMapping注解协同工作,取得缩小选择范围的效果。
例如:
@RequestMapping("/test")
public class TestController {}
则,该类下的所有访问路径都在/test之下。
2.将@RequestMapping用于整个类不是必须的,如果没有配置,所有的方法
的访问路径配置将是完全独立的,没有任何关联。
3.完整的参数项为:@RequestMapping(value="",method =
{"",""},headers={},params={"",""}),各参数说明如下:
value :String[] 设置访问地址
method: RequestMethod[]设置访问方式,字符数组,查看RequestMethod
类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用
RequestMethod.GET,RequestMethod.POST
headers:String[] headers一般结合method = RequestMethod.POST使用
params: String[] 访问参数设置,字符数组 例如:userId=id
4.value的配置还可以采用模版变量的形式 ,例如:@RequestMapping
(value="/owners/{ownerId}", method=RequestMethod.GET),这点将在介
绍@PathVariable中详细说明。
5.@RequestMapping params的补充说明,你可以通过设置参数条件来限制
访问地址,例如params="myParam=myValue"表达式,访问地址中参数只有
包含了该规定的值"myParam=myValue"才能匹配得上,类似"myParam"之类
的表达式也是支持的,表示当前请求的地址必须有该参数(参数的值可以是
任意),"!myParam"之类的表达式表明当前请求的地址不能包含具体指定的
参数"myParam"。
6.有一点需要注意的,如果为类定义了访问地址为*.do,*.html之类的,则
在方法级的@RequestMapping,不能再定义value值,否则会报错,例如
Java代码
@RequestMapping("/bbs.do")
public class BbsController {
@RequestMapping(params = "method=getList")
public String getList() {
return "list";
}
@RequestMapping(value= "/spList")
public String getSpecialList() {
return "splist";
}
}
如上例:/bbs.do?method=getList 可以访问到方法getList() ;而访
问/bbs.do/spList则会报错.
@PathVariable
1.@PathVariable用于方法中的参数,表示方法参数绑定到地址URL的模板
变量。
例如:
Java代码
@RequestMapping(value="/owners/{ownerId}",
method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model
model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
2.@PathVariable用于地址栏使用{xxx}模版变量时使用。
如果@RequestMapping没有定义类似"/{ownerId}" ,这种变量,则使用在
方法中@PathVariable会报错。
@ModelAttribute
1.应用于方法参数,参数可以在页面直接获取,相当于
request.setAttribute(,)
2.应用于方法,将任何一个拥有返回值的方法标注上 @ModelAttribute,使
其返回值将会进入到模型对象的属性列表中.
3.应用于方法参数时@ModelAttribute("xx"),须关联到Object的数据类型
,基本数据类型 如:int,String不起作用
例如:
Java代码
@ModelAttribute("items")//<——①向模型对象中添加一个名为items的
属性
public List
populateItems() {
List
lists = new ArrayList
();
lists.add("item1");
lists.add("item2");
return lists;
}
@RequestMapping(params = "method=listAllBoard")
public String listAllBoard(@ModelAttribute("currUser")User user,
ModelMap model) {
bbtForumService.getAllBoard();
//<——②在此访问模型中的items属性
System.out.println("model.items:" + ((List
)
model.get("items")).size());
return "listBoard";
}
在 ① 处,通过使用 @ModelAttribute 注解,populateItem() 方法将在
任何请求处理方法执行前调用,Spring MVC 会将该方法返回值以“items
”为名放入到隐含的模型对象属性列表中。
所以在 ② 处,我们就可以通过 ModelMap 入参访问到 items 属性,当执
行 listAllBoard() 请求处理方法时,② 处将在控制台打印
出“model.items:2”的信息。当然我们也可以在请求的视图中访问到模型
对象中的 items 属性。
@ResponseBody
这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节
流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。
@RequestParam
@RequestParam是一个可选参数,例如:@RequestParam("id") 注解,所以
它将和URL所带参数 id进行绑定
如果入参是基本数据类型(如 int、long、float 等),URL 请求参数中
一定要有对应的参数,否则将抛出
org.springframework.web.util.NestedServletException 异常,提示无
法将 null 转换为基本数据类型.
@RequestParam包含3个配置 @RequestParam(required = ,value="",
defaultValue = "")
required :参数是否必须,boolean类型,可选项,默认为true
value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方
法的参数
defaultValue:String类型,参数没有传递时为参数默认指定的值
@SessionAttributes session管理
Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到
session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问
到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来
实现的。@SessionAttributes 只能声明在类上,而不能声明在方法上。
例如
@SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})
@CookieValue 获取cookie信息
@RequestHeader 获取请求的头部信息
在springmvc中 @RequestMapping(value={, })是什么意思?
这个意思是说请求路径 可以为空或者/
我给你举个例子:比如百度知道的个人中心 访问路径是
http://zhidao.baidu.com/ihome,当然你也可以通过 http://zhidao.baidu.com/ihome/来访问。我再举个例子 比如你在
在springmvc中 配置 @RequestMapping(value={"test", "test1"})
如果你项目端口是8080;然后你要访问这个方法,
你可以通过 http://localhost:8080/test或者http://localhost:8080/test1来访问
aop怎么获取springmvc controller中的requestmapping
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView myMethod(HttpServletRequest request,
HttpServletResponse response,
//@RequestParam("username")String username, @RequestParam("password")String password
String username,String password,//如果和前台的一样一样简写成这样
ModelMap modelMap) throws Exception {
username = new String(username.getBytes("iso8859-1"),"UTF-8");//编码问题 (服务器一帮都是iso的)
System.out.println(username+":"+password);
modelMap.put("loginUser", username);
modelMap.put("msg", "I'm in session");
return new ModelAndView("/view/hello", modelMap);
}
这里是一个方法,springMVC中参数可以直接现在方法的参数列表中,如果是对象属性的话也可以直接使用对象例如(User user,...)
刚才的方法对应的前台:
username:
password:
追问
我的form表单中有10多个字段 而且和数据库都是一一对应的,而且以后说不定还会增加,不想一个字段一个字段的传,想直接将整个form表单的所有字段全传过去 该怎么写啊
回答
这些数据都是一个类里面的吧。就只要吧原来的string username,string password ...
改成哪个类就行了,会自动封装进去的例如:方法的参数User user,HttpRequest requrst,..
使用的时候只要user.getUsername();
类似下面的:
@RequestMapping("/addUser")
public String addUser(User user,HttpServletRequest request){
userManager.addUser(user);
return "redirect:/user/getAllUser";
}
springMVC使用@RequestMapping时,资源文件出现404是怎么回事
springMVC使用@RequestMapping时,资源文件出现404是怎么回事
UpdateWindow( )的作用是使窗口立即重绘。调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。
OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。为什么需要OnDraw呢,是为了让OnDraw一个函数服务于不同的绘图环境,比如显示器,打印机,绘图仪 ,mfc在调用OnDraw之前会把适当的CDC对象传给OnDraw函数。这样窗口的打印功能就可以和显示共用一个函数。
springmvc controller 的继承问题
一、问题
在书写controller时 我们一般会先定义一个baseController,里面设置获取一些通用业务信息,比如获取当前登录用户信息等。
这种情况下的baseController里 ,不会做RequestMapping 也就是web请求不会直接到这个父类,这种继承是不会有任何问题的。
如
当有些业务的controller 也需要被继承呢,类似这种 带有requestMapping 注解
如果我们写一个这样的业务类来继承它
那么就会有惊喜
简单说 就会告诉你 模糊的映射 也就是无法确定请求分配到哪个controller的方法
二、原因
容易看出子类MisSyncZYJController 继承了MisSyncController 连带requestMapping 也设为一样,requestMapping 可以理解为请求派发的命名空间,相同的空间里,子类享有父类protected及其以上的访问权限,当容器启动做方法请求映射时,就会发现父类的一般请求方法,全部都没有明确派发地址了。
三 处理
1、隔离命名空间,这是最简单的,直接把子类的requestMapping 多一级或者换个名称
类似
2、 放弃继承带有requestMapping的一般业务类,而只继承没有请求派发的一般父类,类似上文提到的baseController
3、带有疑问的不可行方案,技术上讲,如果把父类的方法设置为private(private方法不影响web请求派发),子类是不可访问的,那么我们不改requestMapping,把有问题的业务父类方法设置成private时可以吗,答案是 no
看到尽管已经标记为private ,依然还是报模糊的映射规则。
不过话说回来 就算这个方案技术可行,也是不符合主流规范的,纯粹测试,至于原因 有待深究。
四、引申
如果两个没有关联 或者说并行的controller想用一样的映射空间 比如'/misSync', 可以吗,答案是没问题的。
只是在找请求的时候,本来只要在一个misSync对应的controller里找,现在变成要找其他也标记为misSync的controller,如果一个controller已经非常庞大,命名空间也不能改,确实也可以考虑这样拆分一部分出去。
当然最好还是一个命名空间一个controller,方便跟踪请求了。
springMVC怎么获取前台post过来的对象
springmvc 可以用model直接数据绑定。举个例子,如果是controller里:
@RequestMapping(“/xxx.action”)
public String doXXX(User user){
String username = user.getUserName();
//这样就直接获取了,但这种方法有个要求,就是bean的字段名称和前台input里的name要一致。
return null;
}
springmvc 可以用model直接数据绑定。举个例子,如果是controller里:
@RequestMapping(“/xxx.action”)
public String doXXX(User user){
String username = user.getUserName();
//这样就直接获取了,但这种方法有个要求,就是bean的字段名称和前台input里的name要一致。
return null;
}
@RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody Map
testPostJson(
@RequestBody UserForm userForm,
BindingResult bindingResult) {
Map
map = new HashMap
();
if (bindingResult.hasErrors()) {
map.put("errorCode", "40001");
map.put("errorMsg", bindingResult.getFieldError().getDefaultMessage());
}
map.put("user", userForm);
return map;
}
完整参考:http://www.bubuko.com/infodetail-300580.html
1、通过注解方式,能够将jsp对应到form表单action中对应的类中
2、在类中进行逻辑操作
3、将处理后的结果返回到jsp
Spring MVC @requestmapping return 返回一个字符串路径是什么意思
表示的是该路径下的视图页面,在你的视图解析器里会对该字符串进行解析,然后进行渲染,你可以在配置文件里看一下,ViewResolver的suffix是如何配置的,如果是.jsp,那么比如第一个返回的就是travelShopList.jsp页面。或者.html那么就返回的是.html文件,前面的表示该jsp的相对路径