SpringMVC
快速入门
- jar包
- commons-logging-1.1.3.jar
- spring-aop-4.0.0.RELEASE.jar
- spring-beans-4.0.0.RELEASE.jar
- spring-context-4.0.0.RELEASE.jar
- spring-core-4.0.0.RELEASE.jar
- spring-expression-4.0.0.RELEASE.jar
- spring-web-4.0.0.RELEASE.jar
- spring-webmvc-4.0.0.RELEASE.jar
- 在web.xml中配置DispatcherServlet
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
- mvc.xml文件中配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--注解扫描--> <context:component-scan base-package="com.*"></context:component-scan> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
- 编写Controller层标识
package com.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author Jamin <br>
* @date 2019/3/28 14:35 <br>
* controller层
*/
@Controller
public class UserController {
/**
* helloword
*
* @return index页面
*/
@RequestMapping(value = "/hello")
public String hello() {
System.out.println("Hello World");
return "index";
}
}
获取数据
-
@RequestMapping:支持Ant风格资源地址
* – ?:匹配文件名中的一个字符
* – *:匹配文件名中的任意字符
* – : 匹配多层路径 -
@PathVarivable:将URL中的占位符参数绑定到控制台的处理方法的入参中
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping(value = "/hello}") public String hello(@RequestParam(value = "name", required = false) String name) { System.out.println("Hello World"); return "index"; } }
-
@RequestParm
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping(value = "/hello}") public String hello(@RequestParam(value = "name", required = false) String name) { System.out.println("Hello World"); return "index"; } }
-
@RequestHeader
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping(value = "/hello}") public String hello(@RequestHeader(value = "Host") String header) { System.out.println("Hello World" + header); return "index"; } }
-
@CookieValue
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping(value = "/hello}") public String hello(@CookieValue(value = "JSESSIONID") String cookie) { System.out.println("Hello World" + cookie); return "index"; } }
-
使用 Servlet API 作为入参
- HttpServletRequest
- HttpServletResponse
- HttpSession
- java.security.Principa
- Locale
- InputStream
- OutputStream
- Reader
- Writer
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping(value = "/hello}") public String hello(HttpServletRequest request) { System.out.println("Hello World"); String name = request.getParameter("name"); System.out.println(name); return "index"; } }
输出数据
- ModelAndView
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping("/hello") public ModelAndView hello() { ModelAndView mav = new ModelAndView(); mav.addObject("name","张三"); mav.addObject("age","12"); mav.setViewName("index"); return mav; } }
- Model
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("name","zhangsan"); return "index"; } }
- @SessionAttributes 赋值方法是同名赋值
@SessionAttributes(value = "user") @Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping("/hello") public ModelAndView hello() { ModelAndView mav = new ModelAndView(); mav.addObject("user", "saddd"); mav.setViewName("index"); return mav; } }
- Map
@Controller public class UserController { /** * helloword * * @return index页面 */ @RequestMapping("/hello") public String hello(Map map) { map.put("name", "asnkjhauicgayucfyt"); return "index"; } }
- @ResponseBody 返回值单独为一个页面
@RequestMapping("del") @ResponseBody public String deleteUser(@RequestParam(value = "id") String id, HttpServletResponse response) { int i = us.deleteUser(Integer.parseInt(id)); if (i > 0) { return "删除成功"; } else { return "删除失败"; } }
- @RequestBody 将前台的发送的json对象转换为java对象
/** * json对象序列化json字符串List接受 * * @param jsonObject * @return */
@RequestMapping("/json.do")
@ResponseBody
public void test3(@RequestBody List
System.out.println(users);
}
#### springmvc请求原理
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器HandlerMapping查找 Handler (controller可以根据xml配置、注解进行查找)
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器HandlerAdapter去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器View resolver去进行视图解析
根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染
视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果