Spring MVC 使用时需要注意的几个点

  问题1: 如何指定以某种请求方法请求?如 get、post

  Spring MVC 获取请求使用 @RequestMapping 注解。
  该注解比较常用的形式有两种,第二种方式表示限定为指定的请求方式才会执行该方法。

@RequestMapping("/testE")
public ModelAndView testE(ModelAndView model){
    
    ...}
@RequestMapping(value = "/testE",method = RequestMethod.POST)
public ModelAndView testE(ModelAndView model){
    
    ...}

  问题2:因为 Spring MVC 会自动执行获取数据以及封装对象的过程,那么如果 Web 端传递一个 name 参数,Java 端接受的时候方法的参数既有 String name,又有一个 Test1Model 类的对象,而 Test1Model 类中有一个属性名是 name,会怎么样呢?

  都会获取到 Web 端传递过来的 name 参数的值。

@RequestMapping("/testE")
public ModelAndView testE(ModelAndView model, String name){
    
    ...}

  问题3:如果 Web 端某个参数传递的值不止一个怎么办?比如复选框

  使用数组来获取

//http://127.0.0.1:8080/spring-mvc/test1/testD.do?hobby=qwer&hobby=asdf&aa=bb
@RequestMapping("/testD")
public String doD(String aa,String[] hobby){
    
    ...}

  问题4:在 Spring MVC 中,可以不以使用传统 JavaWeb 工程的对象?比如HttpServletRequest 类对象 request、HttpServletResponse 类对象 response、HttpSessio 类的对象 session。

  可以使用,如果希望使用这些变量,只需要在方法中定义出对应类型的形参变量

@RequestMapping("/testF")
public ModelAndView testF(HttpServletRequest request,String aa){
    
    ...}

  其他的 HttpServletResponse 类、HttpSession 类等也是一样的使用,但是要注意在 Maven 的配置文件 pom.xml 中引入 Serlvet API 的依赖。

  问题5:默认情况下,返回结果会执行请求转发会去视图解析器那里进行前后缀拼接,如果不希望进行拼接要怎么做?

  使用 forward:/web/page/index.jsp 就不会进行前后缀拼接了,forward: 后面就是想要转发的路径,可以转发到页面,也可以转发到控制器。

  问题6:怎么进行请求重定向?

  使用 redirect:/web/page/index.jsp 进行请求重定向,redirect: 后面的是需要重定向的路径。但是需要注意!在传统 JavaWeb 工程中,请求重定向的路径需要写工程名,而在 Spring MVC 中不需要写工程名。

  Restful 请求路径:是一种适用于前后端完全分离的开发方式。

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/114438766