• SpringMVC总结


    Spring MVC框架
    一、SpringMVC运行步骤:
    1.DispatcherServlet接收客户端的请求;
    2.DispatcherServlet使用HandlerMapping查找负责处理该请求的Controller处理器
    3.DispatcherServlet将请求分发给对应的Controller处理器
    4.Controller处理器完成业务处理后,返回ModelAndView对象
    5.DispatcherServlet调用ViewResolver组件对ModelAndView中的逻辑视图名进行解析,
    得到真实的视图对象
    6.DispatcherServlet对模型对象Model进行视图渲染


    二、web.xml配置

    Web.xml中配置的DispatherServletContextLoadListener有什么用?
    DispatherServlet在web.xml中配置,用于拦截匹配的Request,依据规则分发给Controller处理。
    DispatherServlet还可以配置url的后缀。返回响应页面给客户端


    三.Controller层注解参数

    0.@Controller修饰类,表明该类是属于Controller层的

    Controller层可以接收请求,绑定参数,处理方法,响应到视图

    1.@RequestMapping为控制器指定可以处理哪些 URL 请求

    比如,@RequestMapping("/user")用于处理/user路径下的请求

    2.返回的字符串对应的是视图的名称

    3.@RequestParam(value="name")String name , 在Controller层的方法参数中,  相当于request.getParameter("name")
    4.@ResponseBody 可以以json等格式返回对象,注解作用于方法上方

    5.@RestController相当于@ResponseBody 加 @Controller
    用@RestController修饰类,那么类里面的方法就相当于有了@ResponseBody,会通过Url生成json.

    6.@PathVariable可以将url中占位符  { 变量 } 里面输入的数据绑定到对应的方法参数上。

    7.@RequestBody  注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。可以用于方法参数。
    我之前有一次在写Controller层里的某个参数为JSONObject的方法时,忘了在参数前面加上@RequestBody,结果用PostMan测试接口,一直出错。
    后来在方法里面打断点,调试发现一直没有进入方法里,于是才发现是@RequestBody的坑。。

    @Controller
    @RequestMapping("/user")
    public class UserController {
        @Resource(name = "userService")
        private UserServiceImpl userService;
    
        //根据用户id查询用户信息
        //通过  http://localhost:8080/user/showUser?id=1访问
        @RequestMapping("/showUser")
        public String toIndex(HttpServletRequest request, Model model){
            int userId = Integer.parseInt(request.getParameter("id"));
            User user = this.userService.getUserById(userId);
            model.addAttribute("user", user);
            return "showUser";
        }
    
        //查询所有的用户
        @RequestMapping("/showUsers")
        public String toShowUsers(HttpServletRequest request) {
            List<User> userList;
            userList=this.userService.showUsers();
            request.setAttribute("userList",userList);
            return "showUsers";
        }
    
    
        //在数据库中插入表单提交的新用户数据
        @RequestMapping("/insert")
        public  String toInsert(HttpServletRequest request, Model model) {
            int id=Integer.parseInt(request.getParameter("userId"));
            String account=request.getParameter("account");
            String password=request.getParameter("password");
            int age=Integer.parseInt(request.getParameter("age"));
            User user=new User(id,account,password,age);
            this.userService.insertUser(user);
            request.setAttribute("user",user);        //设置属性,便于在前端页面获取数据
            return "finishRegister";
        }
    
        //尝试从页面请求中获取参数到后台
        @RequestMapping("/param")
        public String testRequestParam(@RequestParam(value="userId") Integer id,
                                       @RequestParam(value="account")String userName,
    @RequestParam(value="age")int age, @RequestParam(value = "password")String password,
    HttpServletRequest request){ User user
    =new User(id,userName,password,age); request.setAttribute("user",user); return "finishRegister"; } @RequestMapping("/test") public String toTest(){ return "test"; } @RequestMapping("/register") public String toRegister() { return "register"; } //返回json数据 @ResponseBody @RequestMapping("/json") public User getJson(){ User user=new User(); user.setAge(30); user.setId(22); user.setUserName("feng"); user.setPassword("feng"); return user; }

    // url占位符输入的数据绑定到方法参数userName,比如,输入http://localhost:8080/user/lin时,userName会赋值为lin
    @RequestMapping("/{account}")
    public String testParam(@PathVariable("account") String useName){
    System.out.println(useName);
    return "test";
    }
     



  • 相关阅读:
    编写便于打印的Shellcode
    DOS路径转化为NT路径
    当你孤单时你会想起谁
    【转载】从文件句柄获得全路径
    C# DLLImport C++ dll 几点注意事项
    充值系统系统异常处理解决方案
    Demo 与实际应用开发之间的距离
    IIS7.0出错的解决方案 IIS 状态代码:IIS详细错误代码以及解释
    log4net 写日志到 Sql server 数据库
    Log4net 的使用及注意事项
  • 原文地址:https://www.cnblogs.com/expiator/p/7427846.html
Copyright © 2020-2023  润新知