zoukankan      html  css  js  c++  java
  • SpringMVC学习笔记001

      情景:SpringMVC向后台控制层发送请求,特定方法处理该请求(获取传过来的数据,响应请求,把一些简单数据放入request即Model对象中)

    1. 在web.xml中加入SpringMVC的DispatcherServlet核心控制器,指明拦截哪些请求。
    2. 在WEB-INF文件夹下建立SpringMVC的XML配置文件,component-scan指明扫描那个包下的控制类。
    3. 被@Controller注解的类视为控制类,被@RequestMapping(value="",method=RequestMethod..POST)注解的方法表示处理该类请求(被value值匹配的请求),而且该请求只能是POST请求。
    4. 关于@RequestParam和Model model对象,如处理请求的方法 String login(@RequestParam("username") String userName,Model model){ model.addAttribute("userName",userName) }  表示从Request参数username取值赋值给userName,然后放入model对象中,model对象相当于request,里面存储的对象可以通过EL表达式 ${}获取。
    5. @RequestParam从request参数中取值,如果action层变量名和request参数名相同,不需要@RequestParam注解就可以获取值。

      Q1:场景:直接输入URL地址以访问控制层达到实现一些功能的目的,如列表 【模拟表单提交】

           A1:可以浏览器发送请求模拟表单提交等如http://localhost:8080/project/listViewer.spring?username=zhang

              若拦截以".spring"结尾请求,控制层方法将处理listViewer这个请求,并接受参数username的值

      Q2:场景:控制层限制请求的方式?

           A2:在请求处理方法上加@RequestMapping(value="",method=RequestMethod..POST)指明前台发送的请求只能是POST

       Q3:场景:解决多人开发路径可能重复的问题?(如前台登录发送/login请求,后台登录也发送/login请求)【有助于模块化开发】

           解决路径重复问题的办法就是限定各模块的访问路径。
            A3:两个请求可以是/a/login和/b/login,控制层有两个类分别处理/a或者/b下面的请求如:

             

    1 @Controller
    2 @RequestMapping("/a")
    3 public class Login{
    4       @RequestMapping("/login")
    5        public String login(){} 
    6 }

      如果在类的上方使用@RequestMapping注解,表示首先定义相对的父路径,然后在方法上定义的路径是相对于类级别的。

      Q4: 路径问题?controller响应请求是以当前路径为基准,响应文件的路径写法类似Linux切换目录。

         可以在springMVC-servlet.xml加入如下配置:

           <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"  p:prefix="/" />

         它的 功能就是限定默认访问的是/ 根路径。

         注:响应同一目录下文件,路径不要加/,一般情况全部JSP文件应该放在/WEB-INF目录下,这样可以防止直接通过路径访问,必须让后台处理后跳转。

       Q5:控制层重定向到控制层-有参数和无参数传递(区别在请求后面跟参数)

          A5:如控制层处理方法 return "redirect:/listUsername.spring?username=zhang";

            // SpringMVC重定向的关键代码在返回字符串加入"redirect:/"前缀。表示当前目录下发送一个listUsername.spring请求。

       Q6:匹配URL路径执行指定Controller (控制层的处理方法@RequestMapping的value值用变量表示,表示请求的路径该部分可以是任意值,都可以匹配上)

          A6:如发送的请求为 http://localhost:8080/springmvc/login/a/login.spring 表示发送/login目录下的login请求。

            

    @Controller
    @RequestMapping("/login/{subfolder}")
    public class Login{
        @RequestMapping("/login")
        public String login(@PathVariable("subfolder") String subFolder){
            System.out.println(subFolder);
            return "/index.jsp";
        }
    }

            打印输出a,这里login方法中传入的参数和上面@RequestMapping注解的名称相同时,不用向@PathVariable出入值。

          

                 

  • 相关阅读:
    测试杯子
    如何测试网页的登录页面
    功能性测试之边界值测试
    自动化 sample
    软件架构---敏捷和架构的关系
    软件架构---分布式后端架构应该考虑的一些方面
    软件架构---集群与负载均衡
    软件架构---从需求明确架构设计驱动力
    软件架构---质量属性的实现
    软件架构---质量属性(二)
  • 原文地址:https://www.cnblogs.com/zplogo/p/5029918.html
Copyright © 2011-2022 走看看