《spingmvcmodelandview,model,control以及参数传递》由会员分享,可在线阅读,更多相关《spingmvcmodelandview,model,control以及参数传递(12页珍藏版)》请在金锄头文库上搜索。
1、1.web.xml 配置:123456789101112131415dispatcherorg.springframework.web.servlet.DispatcherServlet加载/WEB-INF/spring-mvc/目录下的所有 XML作为 Spring MVC的配置文件contextConfigLocation/WEB-INF/spring-mvc/*.xml1dispatcher*.htm这样,所有的.htm 的请求,都会被 DispatcherServlet 处理;初始化 DispatcherServlet 时,该框架在 web 应用程序 WEB-INF 目录中寻找一个名为
2、servlet-名称-servlet.xml 的文件,并在那里定义相关的 Beans,重写在全局中定义的任何 Beans,像上面的 web.xml 中的代码,对应的是dispatcher-servlet.xml;当然也可以使用元素,手动指定配置文件的路径;dispatcher-servlet.xml 配置:1 2 21 24 25 26 30 2.spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, voidModelAndView1. 2. RequestMapping(/show1) 3. publ
3、ic ModelAndView show1(HttpServletRequest request, 4. HttpServletResponse response) throws Exception 5. ModelAndView mav = new ModelAndView(/demo2/show); 6. mav.addObject(account, account -1); 7. return mav; 8. 通过 ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 , 使用 addObject()设置需要返回的值,addOb
4、ject()有几个不同参数的方法,可以默认和指定返回对象的名字。 调用addObject()方法将值设置到一个名为 ModelMap的类属性,ModelMap 是LinkedHashMap的子类, 具体请看类。Model 是一个接口, 其实现类为 ExtendedModelMap,继承了 ModelMap类。model.addAttribute(pojo, pojo);Map 1. RequestMapping(/demo2/show) 2. public Map getMap() 3. Map map = new HashMap(); 4. map.put(key1, value-1); 5
5、. map.put(key2, value-2); 6. return map; 7. 在 jsp页面中可直通过$key1获得到值, map.put()相当于request.setAttribute方法。 写例子时发现,key 值包括 - . 时会有问题.View 可以返回 pdf excel等,暂时没详细了解。String 指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。注意:如果方法声明了注解ResponseBody ,则会直接将返回值输出到页面。 例如:1. RequestMapping(value = /something, method = RequestM
6、ethod.GET) 2. ResponseBody 3. public String helloWorld() 4. returnHello World; 5. 上面的结果会将文本Hello World 直接写到 http响应流。1. RequestMapping(/welcome) 2. public String welcomeHandler() 3. returncenter; 4. 对应的逻辑视图名为“center”,URL= prefix 前缀+视图名称 +suffix 后缀组成。void 如果返回值为空,则响应的视图页面对应为访问地址1. RequestMapping(/welc
7、ome) 2. publicvoid welcomeHandler() 此例对应的逻辑视图名为welcome。小结:1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。 2.使用 void,map,Model 时,返回对应的逻辑视图名称真实 url为:prefix 前缀+视图名称 +suffix 后缀组成。 3.使用String,ModelAndView返回视图名称可以不受请求的 url绑定,ModelAndView可以设置返回的视图名称。Model model,Ht
8、tpServletRequest request, ModelMap map声明变量request.getSession().setAttribute(test, haiwei2Session); request.setAttribute(test, haiwei1request); map.addAttribute(test, haiweiModelMap); model.addAttribute(test, haiweiModel);我通过$test这个方式取值,优先取 Model和 ModelMap的,Model 和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是 reques
9、t,最后是从session中获取第一个 Controller:1. package com.minx.crm.web.controller; 2. 3. import org.springframework.stereotype.Controller; 4. import org.springframework.web.bind.annotation.RequestMapping; 5. Controller 6. public class IndexController 7. RequestMapping(/index) 8. public String index() 9. return
10、index; 10. 11. package com.minx.crm.web.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;Controllerpublic class IndexController RequestMapping(/index)public String index() return index;Controller 注解标识一个控制器,RequestMapping 注解标记一个
11、访问的路径(/index.htm ),return index标记返回视图(index.jsp);注:如果RequestMapping 注解在类级别上,则表示一相对路径,在方法级别上,则标记访问的路径;从RequestMapping 注解标记的访问路径中获取参数:Spring MVC 支持 RESTful 风格的 URL 参数,如:1. Controller 2. public class IndexController 3. 4. RequestMapping(/index/username) 5. public String index(PathVariable(username) Str
12、ing username) 6. System.out.print(username); 7. return index; 8. 9. Controllerpublic class IndexController RequestMapping(/index/username)public String index(PathVariable(username) String username) System.out.print(username);return index;在RequestMapping 中定义访问页面的 URL 模版,使用 传入页面参数,使用PathVariable 获取传入参
13、数,即可通过地址:http:/localhost:8080/crm/index/tanqimin.htm 访问;根据不同的 Web请求方法,映射到不同的处理方法:使用登陆页面作示例,定义两个方法分辨对使用 GET 请求和使用 POST 请求访问 login.htm 时的响应。可以使用处理 GET请求的方法显示视图,使用 POST请求的方法处理业务逻辑;1. Controller 2. public class LoginController 3. RequestMapping(value = /login, method = RequestMethod.GET) 4. public Strin
14、g login() 5. return login; 6. 7. RequestMapping(value = /login, method = RequestMethod.POST) 8. public String login2(HttpServletRequest request) 9. String username = request.getParameter(username).trim(); 10. System.out.println(username); 11. return login2; 12. 13. Controllerpublic class LoginContro
15、ller RequestMapping(value = /login, method = RequestMethod.GET)public String login() return login;RequestMapping(value = /login, method = RequestMethod.POST)public String login2(HttpServletRequest request) String username = request.getParameter(username).trim();System.out.println(username);return login2;在视图页面,通过地址栏访问 login.htm,是通过 GET 请求访