装饰网站建设的方案,app推广联盟平台,做市场调研的网站,k2 wordpress请求 URL匹配#xff1a; RequestMapping
RequestMapping 负责将请求映射到对应的控制器方法上。
RequestMapping 注解可用于类或方法上。用于类上#xff0c;表示类中的所有响应请求的方法都以该地址作为父路径。
在整个 Web 项目中#xff0c;RequestMapping 映射的请求…请求 URL匹配 RequestMapping
RequestMapping 负责将请求映射到对应的控制器方法上。
RequestMapping 注解可用于类或方法上。用于类上表示类中的所有响应请求的方法都以该地址作为父路径。
在整个 Web 项目中RequestMapping 映射的请求信息必须保证全局唯一。
RequestMapping 注解常用属性
value
RequestMapping 注解的默认属性如果只有 value 属性时可以省略该属性名如果有其它属性则必须写上 value 属性名称。
// 斜杠可省略
RequestMapping(value/login)
RequestMapping(/login)
value 属性支持通配符匹配如 valueuser/* 表示 user/1 或 user/login 都能够正常访问。
path
用法同 value。
name
用来添加描述信息相当于方法注释。如 RequestMapping(value /login,name 用户登录)。
method
method 属性用于表示该方法支持哪些 HTTP 请求。省略 method 则说明该方法支持全部的 HTTP 请求。
//表示该方法只支持 GET 请求
RequestMapping(value login,method RequestMethod.GET)
//说明该方法同时支持 GET 和 POST 请求
RequestMapping(value login,method {RequestMethod.GET,RequestMethod.POST})
params
用于指定请求中规定的参数 。
//请求中必须包含 type 参数时才能执行该请求,即 /login?typex 可访问该方法/login 则无法访问该方法。
RequestMapping(value login,params type)
public String doLogin() {return /test.jsp;
}
//请求中必须包含 type 参数且值为1时才能执行该请求否则无法访问
RequestMapping(value login,params type1)
public String doLogin() {return /test.jsp;
}
header
表示请求中必须包含某些指定的 header 值。
consumes
用于指定请求提交内容类型Content-Type例如application/json、text/html。
RequestMapping(value login,consumes application/json)
produces
用于指定返回的内容类型返回的内容类型必须是 request 请求头Accept中所包含的类型。 除此之外还可以指定返回值的编码。
// 指定返回内容类型
RequestMapping(value login, produces application/json)
// 指定返回内容类型同时指定返回值编码
RequestMapping(value login,produces application/json,charsetutf-8) 请求参数获取
Spring MVC Controller 接收请求参数的方式有很多种有的适合 get 请求方式有的适合 post 请求方式有的两者都适合。主要有以下几种方式 通过处理方法的简单形参接收请求参数 通过实体 Bean 接收请求参数 通过 HttpServletRequest 接收请求参数 通过 RequestParam 接收请求参数 通过 PathVariable 接收 URL 中的请求参数
通过处理方法的简单形参接收请求参数
通过方法形参接收请求参数是根据请求参数名和方法形参名相同原则进行赋值。该接收参数方式适用于 get 和 post 提交请求方式。
RequestMapping(/login)
public String doLogin(String username,String pwd){return /show.jsp; //请求转发
}
通过实体Bean接收请求参数
实体 Bean 接收请求参数适用于 get 和 post 提交请求方式。Bean 的属性名称必须与请求参数名称相同。请求参数按同名原则赋值给 Bean 的属性。如果 Bean 中的属性是 数字类型则 SpringMVC 会自动尝试参数类型的转换。
RequestMapping(/login)
public String doLogin(User user){return /show.jsp; //请求转发
}
通过HttpServletRequest接收请求参数
RequestMapping(/login)
public String doLogin(HttpServletRequest request){String name request.getParameter(username);String pwd request.getParameter(pwd);return /show.jsp; //请求转发
}
通过RequestParam接收请求参数
RequestParam 有以下三个参数 value | name参数名 required是否必须默认为 true表示请求中必须包含对应的参数名若不存在将抛出异常 defaultValue参数默认值
RequestMapping(/login)
public String doLogin(RequestParam(name name,defaultValue admin)String username, RequestParam String pwd){return /show.jsp; //请求转发
}
通过PathVariable接收URL中的请求参数
/*访问 /login/admin/123456, URL中的模板变量 {name} 和 {pwd} 将值 admin 和 123456 绑定到通过 PathVariable 注解的参数 username 和 pwd 上。
*/
RequestMapping(/login/{name}/{pwd})
public String doLogin(PathVariable(name) String username, PathVariable String pwd){return /show.jsp; //请求转发
} 请求转发和重定向
请求转发 方式 1 RequestMapping(/login)
public String doLogin(){return /show.jsp;
} 方式 2 RequestMapping(/login)
public String doLogin(){return forward:/show.jsp;
} 方式3 RequestMapping(/login)
public ModelAndView doLogin(){ModelAndView mv new ModelAndView(/show.jsp);return mv;
} 方式4 RequestMapping(/login)
public void doLogin(HttpServletRequest request, HttpServletResponse response){request.getRequestDispatcher(show.jsp).forward(request,response);
}
重定向 方式1 RequestMapping(/login)
public String doLogin(){return redirect:/show.jsp;
} 方式2 RequestMapping(/login)
public void doLogin(HttpServletResponse response){response.sendRedirect(/demo/show.jsp);
}
传值到View 方式1 // 将放在 model 中的属性 m2 的作用域设置为 session 范围
SessionAttributes(m2)
public class LoginController {RequestMapping(/login)public String doLogin(Model model){model.addAttribute(m1,info); //requestmodel.addAttribute(m2,info2); //sessionreturn forward:/show.jsp; }
} 方式2 RequestMapping(/login)
public ModelAndView doLogin(){ModelAndView mv new ModelAndView();mv.setViewName(/show.jsp);mv.addObject(m,info);return mv;
} 方式3 RequestMapping(/login)
public String doLogin(HttpServletRequest request,HttpSession session){request.setAttribute(m1,info); //requestsession.setAttribute(m2,info2); //sessionreturn forward:/show.jsp;
} 方式4 ModelAttribute 注解用于将其修饰的对象自动暴露为模型数据在视图页面展示时使用。 RequestMapping(/login)
//等价于 model.addAttribute(user,user)
public String doLogin(ModelAttribute(user) User user){return /show.jsp;
}
RequestMapping(/login)
//等价于 model.addAttribute(User,yh)
public String doLogin(ModelAttribute User yh){return /show.jsp;
} Ajax 响应
Controller
Controller
public class LoginController {RequestMapping(/login)ResponseBody // 响应 Ajax 请求必须添加此注解public Student doLogin(String name,String pwd){User user userService.selectUser(name,pwd);return user; // 返回到 view 的数据会自动转为 jsonjs 对象}
}
RestController
RestController ControllerResponseBody
RestController
public class LoginController {RequestMapping(/login)public User login(String name,String pwd) {User user userService.selectUser(name,pwd);return user;}
} 视图资源解析器
视图解析器ViewResolver是 Spring MVC 的重要组成部分负责将逻辑视图名解析为具体的视图对象。
URLBasedViewResolver
UrlBasedViewResolver 是对 ViewResolver 的一种简单实现主要提供了一种拼接 URL 的方式来解析视图。
UrlBasedViewResolver 通过 prefix 属性指定前缀suffix 属性指定后缀。当 ModelAndView 对象返回具体的 View 名称时它会将前缀 prefix 和后缀 suffix 与具体的视图名称拼接得到一个视图资源文件的具体加载路径从而加载真正的视图文件并反馈给用户。
使用 UrlBasedViewResolver 除了要配置前缀和后缀属性之外还需要配置“viewClass”表示解析成哪种视图。
bean idviewResolver classorg.springframework.web.servlet.view.UrlBasedViewResolver property nameviewClass valueorg.springframework.web.servlet.view.InternalResourceViewResolver/!--不能省略--!--前缀--property nameprefix value/WEB-INF/jsp//!--后缀--property namesuffix value.jsp/ /bean 存放在 /WEB-INF/ 目录下的内容不能直接请求到为了安全性考虑通常把 jsp 文件放在 WEB-INF 目录下
InternalResourceViewResolver
InternalResourceViewResolver 为“内部资源视图解析器”是日常开发中最常用的视图解析器类型。它是 URLBasedViewResolver 的子类拥有 URLBasedViewResolver 的一切特性。
bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolver!--前缀--property nameprefix value/WEB-INF/jsp//!--后缀--property namesuffix value.jsp/
/bean