Spring MVC 4 相关注解的详细讲解(2)

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

import com.chen.proj.service.UserService;

@Controller
@RequestMapping("admin")
@SessionAttributes("user")
public class LoginController {
   
    @Resource
    UserService service;
   
    @RequestMapping(value = "doLogin", method = RequestMethod.POST)
    public String doLogin(@RequestParam String username , @RequestParam String password, HttpServletRequest request,
            ModelMap map ){   
        try {
            User user = service.doLogin(username, password);
            map.put("user", user);
        } catch (Exception e) {
            request.setAttribute("error", e.getMessage());
            return "/WEB-INF/jsp/login.jsp";
        }     
        return "/WEB-INF/jsp/loginsuccess.jsp";
    }
   
}

7.@ResponseBody

@ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中。@ResponseBody在输出JSON格式的数据时会用到。

示例如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.chen.proj.bean.User;

@Controller
public class JsonController {

@ResponseBody
    @RequestMapping("/getJson")
    public User getUserInfo(){
        User user = new User();
        user.setPassword("1234");
        user.setUsername("jsontest");
        return user;
    }   
}

8.@RestController

我们经常见到一些控制器实现了REST的API,只为服务于json,xml或其它自定义的类型内容。@RestController用来创建REST类型的控制器,与@Controller类型。@RestController就是这样一种类型,它避免了你重复的写@RequestMapping与@ResponseBody

9.@ModelAttribute

@ModelAttribute可以作用在方法或方法参数上,当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性。
当作用在方法参数上时,表明该参数可以在方法模型中检索到。如果该参数不在当前模型中,该参数先被实例化然后添加到模型中。一旦模型中有了该参数,该参数的字段应该填充所有请求参数匹配的名称中。这是spring mvc中重要的数据绑定机制,它省去了单独解析每个表单字段的时间。

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.chen.proj.bean.User;

@Controller
public class UserController {

@ModelAttribute
    public User addUser(@RequestParam String number) {
        return service.findUser(number);
    }

@ModelAttribute
    public void populateModel(@RequestParam String number, Model model) {
        model.addAttribute(service.findUser(number));   
        // add more ...
    }
}

注解的出现终结了xml配置文件漫天飞的年代,它让程序拥有更高的可读性,可配置性与灵活性。给人一种更简洁明了的感觉。

Spring MVC+Spring3+Hibernate4开发环境搭建

Spring MVC整合Freemarker基于注解方式

基于注解的Spring MVC简单介绍

Spring MVC 框架搭建及详解

Spring MVC使用Cron表达式的定时器

简单的Spring MVC经典案例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0d504fabaa7f9bb44b4552a19431076c.html