spring学习笔记001

转载自:http://www.cnblogs.com/zplogo/p/5029918.html SpringMVC学习笔记001   情景:SpringMVC向后台控制层发送请求,特定方法处理该请求(获取传过来的数据,响应请求,把一些简单数据放入request即Model对象中) 在web.xml中加入SpringMVC的DispatcherServlet核心控制器,指明拦截哪些请求。 在WEB-INF文件夹下建立SpringMVC的XML配置文件,component-scan指明扫描那个包下的控制类。 被@Controller注解的类视为控制类,被@RequestMapping(value="",method=RequestMethod..POST)注解的方法表示处理该类请求(被value值匹配的请求),而且该请求只能是POST请求。 关于@RequestParam和Model model对象,如处理请求的方法 String login(@RequestParam("username") String userName,Model model){ model.addAttribute("userName",userName) } 表示从Request参数username取值赋值给userName,然后放入model对象中,model对象相当于request,里面存储的对象可以通过EL表达式 ${}获取。 @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加入如下配置:           它的 功能就是限定默认访问的是/ 根路径。      注:响应同一目录下文件,路径不要加/,一般情况全部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出入值。
原文地址:https://www.cnblogs.com/327999487heyu/p/5426616.html