java基础---spring和springmvc注解

1、springmvc注解

    @RequestMapping  @RequestParam @ModelAttribute  @SessionAttributes  @Responsebody @RequestBody


@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
    /**
     * 1.@ModelAttribute注释void返回值的方法
      * @param abc
     * @param model
     */
    @ModelAttribute
    public void populateModel(@RequestParam String abc, Model model) {
        model.addAttribute("attributeName", abc);
    }
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue" ) public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { // implementation omitted }}

public String requestparam1(@RequestParam String username)

 @ModelAttribute注释一个方法

被@ModelAttribute注释的方法表示这个方法的目的是增加一个或多个模型(model)属性。这个方法和被@RequestMapping注释的方法一样也支持@RequestParam参数,但是它不能直接被请求映射。实际上,控制器中的@ModelAttribute方法是在同一控制器中的@RequestMapping方法被调用之前调用的。

被@ModelAttribute注释的方法用于填充model属性,例如,为下拉菜单填充内容,或检索一个command对象(如,Account),用它来表示一个HTML表单中的数据。
一个控制器可以有任意数量的@ModelAttribute方法。所有这些方法都在@RequestMapping方法被调用之前调用。

有两种类型的@ModelAttribute方法。一种是:只加入一个属性,用方法的返回类型隐含表示。另一种是:方法接受一个Model类型的参数,这个model可以加入任意多个model属性。

package demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import demo.model.User;

@Controller
@RequestMapping(value="/demo1")
//(1)将ModelMap中属性名为currUser的属性放到Session属性列表中,以便这个属性可以跨请求访问
@SessionAttributes("currUser")
public class Demo1Controller {
    
    @RequestMapping(value="/getUser")
    public String getUser(ModelMap model){
        User user=new User();
        user.setUser_name("zhangsan");
        user.setUser_age(25);
        user.setUser_email("[email protected]");
        //(2)向ModelMap中添加一个属性
         model.addAttribute("currUser",user);
        return "/demo/user";
    }
    
    @RequestMapping(value="/getUser1")
    public String getUser1(ModelMap model){
        User user=(User)model.get("currUser");
        System.out.println(user.getUser_name());
        System.out.println(user.getUser_age());
        System.out.println(user.getUser_email());
        return "demo/user1";
    }
    @RequestMapping(value="/addUserInfo",method=RequestMethod.POST)
    @ResponseBody
     //将请求中的data写入UserModel对象中
    public String addUserInfo(@RequestBody UserModel user){
        System.out.println("user_name--------"+user.getUser_name());
        System.out.println("user_sex--------"+user.getUser_sex());
        System.out.println("user_age--------"+user.getUser_age());
            System.out.println("user_email--------"+user.getUser_email());
        System.out.println("user_title--------"+user.getUser_title());
        System.out.println("user_education--------"+user.getUser_education());
        System.out.println("user_telephone--------"+user.getUser_telephone());
        //不会被解析为跳转路径,而是直接写入HTTP response body中
        return "{}";
    }
}


2、spring常用注解

   @Component:标准一个普通的spring Bean类。 (通用的)
    @Controller:标注一个控制器组件类。 
    @Service:标注一个业务逻辑组件类。 

    @Repository:标注一个DAO组件类。

在spring未来的版本中,@Controller,@Service,@Repository会携带更多语义。尽量考虑使用@Controller,@Service,@Repository代替通用的@Component。

猜你喜欢

转载自blog.csdn.net/u010775025/article/details/79479764
今日推荐