SpringMVC 注解相关
来源:互联网 发布:msde和sql 编辑:程序博客网 时间:2024/05/18 01:36
@Controller注解
使用@Controller
注解的类可以不需要集成特定的父类或者接口。 该注解标注的类就是一个SpringMVC Controller
对象。为了让Spring
能够自动找到控制器类,需要使用<context:component-scan../>
元素,该元素指定一个包,这样Spring
会自动扫描该包下的所有带有Spring
注解的累,将其作为Spring
的Bean
。当然也要加上下面的元素:
<!-- 配置annotation类型的处理映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 配置annotation类型的处理映射器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
@RequestMapping注解
@Controller
注解可以指定了Controller
,但是并不能指定哪个方法处理请求。@RequestMapping
注解指示Spring
用哪个类的哪一个方法处理请求动作。该注解可以用于类、方法。
@Controller@RequestMapping(value = "/user")public class UserController { private static final Log logger = LogFactory.getLog(UserController.class); //该方法的请求为 http://localhost:8080/user/register GET请求 @RequestMapping(value = "/register", method = RequestMethod.GET) public String registerForm() { logger.info(" register GET 方法被调用"); return "registerForm"; }}
- 用于类的
@RequestMapping(value = "/user")
注解表示该要访问该类下的路由都需要加上/user
; - 用于方法
registerForm
的注解@RequestMapping(value = "/register", method = RequestMethod.GET)
指定该方法处理http://localhost/user/register
请求,同时该方法只能处理GET
请求。 @RequestMapping
默认属性是value
。
@RequestMapping
注解的部分属性
@RequestParam注解
@RequestMapping(value = "/register", method = RequestMethod.POST) public String register( @RequestParam("loginname") String loginname, @RequestParam("password") String password, @RequestParam("username") String username) { //... }
@RequestParam("loginname") String loginname
将请求中的loginname
对应的值赋给loginname
参数。
@PathVariable注解
@PathVariable
注解只有一个value
属性,表示请求中绑定到参数的值的名称。
@RequestMapping(value = "/pathVariableTest/{userId}") public void pathVariableTest(@PathVariable(value = "userId") Integer userId) { //... }
@RequestMapping(value = "/pathVariableTest/{userId}")
这是一个动态的请求,{userId}
对于不同的请求有不同的值,@PathVariable(value = "userId") Integer userId
这里指定请求中的userId
会赋值到参数userId
中。
@RequestHeader注解
该注解用于将请求的头信息数据映射到参数上。
@RequestMapping(value = "/requestHeaderTest") public void requestHeaderTest( @RequestHeader("User-Agent") String userAgent, @RequestHeader(value = "Accept") String[] accepts) { //... }
@RequestHeader("User-Agent") String userAgent
将请求头的User-Agent
信息注入到userAgent
参数中。
@CookieValue注解
该注解将请求的Cookie
数据映射到参数中。
public void cookieValueTest( @CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId) { logger.info("通过@CookieValue获得数据: " + sessionId); }
@CookieValue(value = "JSESSIONID", defaultValue = "") String sessionId)
将Cookie
中的JSESSIONID
值设置到sessionId
参数中。
@SessionAttribute注解
该注解可以选择Model
中哪些属性存入到HttpSession
中。
@Controller@RequestMapping(value = "session")//将Model中的属性名为user的属性放入HttpSession对象当中@SessionAttributes("user")public class SessionAttributesController { @RequestMapping(value = "/login") public String login( @RequestParam("loginname") String loginname, @RequestParam("password") String password, Model model ) { User user = new User(); user.setLoginname(loginname); user.setPassword(password); user.setUsername("admin"); model.addAttribute("user", user); return "welcome"; }}
@SessionAttributes("user")
指定将Model
中属性为user
的内容存到HttpSession
中。
@ModelAttribute注解
被该注解注释的方法会在Controller
每个方法执行前被执行。
1.第一种情况 ModelAttribute(value=”“)修饰返回具体类型的方法
ModelAttribute(value=”xx”),修饰的方法返回的值会被添加到Model
中,键为ModelAttribute(value="")
的xx
,值为方法返回的值。
控制器:
@Controller@RequestMapping(value = "/model")public class ModelAttributeController { @ModelAttribute(value = "loginname") public String userModel1( @RequestParam("loginname") String name) { return name; } @RequestMapping(value = "/login1") public String login1() { return "result1"; }}
表单
<form action="/model/login1" method="post"> <table> <tr> <td><label>登录名: </label></td> <td><input type="text" name="loginname"></td> </tr> <tr> <td><input type="submit" value="登录"></td> </tr> </table> </form>
表单点击登录后,调用ModelAttributeController
控制器的login1
方法,在调用该方法前会先调用userModel1
方法,该方法的返回值会被添加到Model
中,对应的键为loginname
。在视图中可以通过EL
表达式获取。
第二种情况 ModelAttribute注释void方法
控制器:
@Controller@RequestMapping(value = "/model2")public class ModelAttribute2Controller { @ModelAttribute public void userModel2( @RequestParam("loginname") String loginname, @RequestParam("password") String password, Model model) { model.addAttribute("loginname", loginname); model.addAttribute("password", password); } @RequestMapping(value = "/login2") public String login2() { return "result2"; }}
ModelAttribute
修饰没有返回值的方法,这时候如果要将数据添加到Model
中,就需要在参数中添加Model
参数。同样当访问.../login2
路由时,userModel2
方法会先于login2
方法调用,将URL
参数添加到Model
中。最后在视图中通过EL
表达式获取数据。
对应的视图是一个登录表单,不在给出。
第三种情况 ModelAttribute注释返回具体类的方法
控制器:
@Controller@RequestMapping("/model3")public class ModelAttribute3Controller { //... @ModelAttribute public User userModel3( @RequestParam("loginname") String loginname, @RequestParam("password") String password ) { return find(loginname, password); } //...}
@ModelAttribute
修饰在返回类的方法上,这里返回的是User
类,那么Model
中添加键为user
,值为返回对象。
第四种情况 @ModelAttritube和@RequestMapping同时修饰一个方法
控制器:
@Controller@RequestMapping(value = "/model4")public class ModelAttribute4Controller { @RequestMapping(value = "/login4") @ModelAttribute(value = "username") public String login4() { return "admin"; }}
- 此时请求的视图是
/login4
。并且Model
键为username
,值为返回的admin
。
第五种情况 @ModelAttribute注释一个方法的参数
控制器:
@Controller@RequestMapping(value = "/model5")public class ModelAttribute5Controller { @ModelAttribute(value = "user") public User userModel5( @RequestParam(value = "loginname") String loginname, @RequestParam(value = "password") String password ) { User user = new User(); user.setLoginname(loginname); user.setPassword(password); return user; } @RequestMapping(value = "/login5") public String login5(@ModelAttribute("user") User user) { user.setUsername("管理员"); return "result5"; }}
@ModelAttribute(value = "user")
先修饰了一个方法,指定该方法返回的值插入到Model
中,键为user
。@ModelAttribute("user") User user
修饰了参数,表示login5
方法的参数user
使用Model
中键为user
的值。
- springMVC中相关注解
- SpringMVC 注解相关
- SpringMVC—相关注解介绍
- 相关注解(spring+springmvc)
- springmvc中的相关配置,注解驱动等
- SpringMVC注解配置Swagger2步骤及相关知识点
- springMVC注解
- springMVC注解
- SpringMVC注解
- Springmvc注解
- SpringMVC注解
- springMVC注解
- springmvc注解
- SpringMVC注解
- springmvc注解
- Springmvc注解
- SpringMVC 注解
- springMVC注解
- 汇编写冒泡排序
- org.hibernate.internal.util.config.ConfigurationException: Unable to perform unmarshalling at line n
- 2017年3月Java编程题整理
- 学习记录
- Windows下安装Anaconda和python
- SpringMVC 注解相关
- java使用CAS实现SSO单点登录
- JAVA学生信息管理系统(数据库版)
- 观察者模式编写属性类
- 环信依赖包EaseUI获取上下文的方法
- 5-7 肿瘤诊断
- 0324 JS
- Bzoj 1926: [Sdoi2010]粟粟的书架(二分答案+乱搞+主席树)
- form表单数据转成json数据的方法