spring-mvc-1
一. SpringMVC的基本搭建
-
引入pom文件
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.6.RELEASE</version> </dependency> </dependencies> -
配置spring的注解扫描
<!--添加注解扫描--> <context:component-scan base-package="com.jiang"></context:component-scan> -
web.xml中配置前端控制器
<!--配置前端控制器--> <servlet> <servlet-name>springmvc</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> <load-on-startup>1</load-on-startup> </servlet> <!-- /:除了.jsp请求,其他都拦截 *:所有请求都拦截--> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>二. SpringMVC请求/响应处理
- web.xml
<!--get请求的中文乱码解决方式:在tomcat的conf目录下的servlet.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />--> <!--post请求的中文乱码解决方式--> <!--配置编码过滤器 CharacterEncodingFilter 解决中文POST乱码问题 一定要写在所有过滤器前面--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--encoding 编码格式--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <!-- 同时开启请求和响应的编码设置--> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <!--配置拦截哪些请求进行过滤--> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <!--拦截规则--> <!--<url-pattern></url-pattern> 根据url请求进行匹配 * <servlet-name> 具体制定过滤哪个servlet --> <servlet-name>springmvc</servlet-name> <!-- <url-pattern>/*</url-pattern>--> </filter-mapping> <!--处理HTML不支持rest中PUT和DELETE --> <filter> <filter-name>methodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>methodFilter</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping>-
spring.xml
<!-- 此配置表示 我们自己配置的请求由controller来处理,但是不能请求的处理交由tomcat来处理 静态资源可以访问,但是动态请求无法访问 --> <mvc:default-servlet-handler/> <!--保证静态资源和动态请求都能够访问--> <mvc:annotation-driven></mvc:annotation-driven> <!-- 将映射的地址直接指向静态资源文件夹,springmvc将不会将此映射作为handler--> <!--<mvc:resources mapping="/images/**" location="/images/"/>--> <!--默认视图解析器 - 配上前缀和后缀 简化 逻辑视图名称--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" name="viewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!--视图控制器(立即访问) path 需要映射的路径 view-name对应的视图名称--> <mvc:view-controller path="/" view-name="index"></mvc:view-controller> <mvc:view-controller path="/main" view-name="param"></mvc:view-controller> -
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>param测试</title> </head> <body> <a>简单参数测试</a> <form action="${pageContext.request.contextPath}/user" method="post"> 姓名:<input type="text" name="name"/> <input type="submit" value="提交"> </form> <h2>复杂参数测试</h2> <form action="${pageContext.request.contextPath}/param?id=1" method="post"> 姓名:<input type="text" name="name"/><p></p> 爱好:<input type="checkbox" name="hobbies[0]" value="打篮球"/>打篮球 <input type="checkbox" name="hobbies[1]" value="读书"/>读书 <input type="checkbox" name="hobbies[2]" value="编程"/>编程<p/> 外号:<input type="checkbox" name="alias" value="小江"/>小江 <input type="checkbox" name="alias" value="灿哥"/>灿哥 <input type="checkbox" name="alias" value="阿灿"/>阿灿<p/> 高中老师:<input type="checkbox" name="teachers['数学']" value="张灿明"/>张灿明 <input type="checkbox" name="teachers['英语']" value="阙笑梅"/>阙笑梅 <input type="checkbox" name="teachers[语文]" value="简金荣"/>简金荣<p/> 理想女友:<input type="text" name="grilFriend.name"/> <input type="submit" value="提交"><p/> </form> <h2>rest风格测试</h2> <a>GET</a> <form action="${pageContext.request.contextPath}/rest/1" method="get"> 姓名:<input name="name" /> <input type="submit" value="提交"> </form> <a>POST</a> <form action="${pageContext.request.contextPath}/rest/1" method="post"> 姓名:<input name="name" /> <input type="submit" value="提交"> </form> <a>PUT</a> <form action="${pageContext.request.contextPath}/rest/1" method="post"> <input type="hidden" value="put" name="_method"> 姓名:<input name="name" /> <input type="submit" value="提交"> </form> <a>DELETE</a> <form action="${pageContext.request.contextPath}/rest/1" method="post"> <input type="hidden" value="delete" name="_method"> 姓名:<input name="name" /> <input type="submit" value="提交"> </form> </body> </html> -
Controller
@Controller public class PathController { @RequestMapping("/user") public String path01(@RequestParam(value = "name",required = false) String name){ System.out.println(name); return "/index.jsp"; } @RequestMapping("/param") public String getUser(@RequestParam("id") Integer id, User user){ System.out.println(id); System.out.println(user); return "/index.jsp"; } @RequestMapping(value = "/rest/{id}",method = RequestMethod.GET) public String getUser2(@PathVariable Integer id, User user, Map model){ model.put("type","Map类型"); System.out.println("查询用户"); System.out.println(user); return "index"; } @PostMapping("/rest/{id}") public String addUser(@PathVariable Integer id, User user, HttpServletRequest request){ request.setAttribute("type","request类型"); System.out.println("添加用户"); System.out.println(user); return "index"; } @PutMapping("/rest/{id}") public String updateUser(@PathVariable Integer id, User user, HttpSession session){ session.setAttribute("type","HttpSession类型"); System.out.println("更新用户"); System.out.println(user); return "redirect:/"; } @Autowired HttpSession session; @DeleteMapping("/rest/{id}") public String deleteUser(@PathVariable Integer id, User user){ session.setAttribute("type","HttpSession类型2"); System.out.println("删除用户"); System.out.println(user); return "redirect:/"; } }
我成功因为我志在成功
浙公网安备 33010602011771号