<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>springmvc_quick</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!--springMVC坐标--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!--servlet坐标--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--jsp坐标--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> </dependencies> </project>
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <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:spring_mvc.xml</param-value> </init-param> <!-- 启动时加载--> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>成功响应</title> </head> <body> <%--视图页面--%> <h2>成功响应springmvc</h2> </body> </html>
package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class UserController { // 编写Controller类,跳转到/quick地址并响应 @RequestMapping("/quick") public String quick(){ System.out.println("收到请求了"); return "success.jsp"; } }
<!-- 开启注解扫描-->
<context:component-scan base-package="controller"/>
<!-- 配置处理器适配器和处理器映射器 ,可以对json格式解析,进行了方法的增强--> <mvc:annotation-driven/>
<!--配置注解扫描--> <context:component-scan base-package="com.controller"/>
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2021/7/17 Time: 14:51 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>请求数据</title> </head> <body> <%--不要有空格--%> <a href="${pageContext.request.contextPath}/data?username=大明&age=19" >普通数据类型</a> <a href="${pageContext.request.contextPath}/object?name=大明&id=2" >对象类型</a> <form method="post" action="${pageContext.request.contextPath}/array"> <input type="checkbox" name="ids" value="1">1<br> <input type="checkbox" name="ids" value="2">2<br> <input type="checkbox" name="ids" value="3">3<br> <input type="checkbox" name="ids" value="4">4<br> <input type="checkbox" name="ids" value="5">5<br> <input type="submit" value="数组元素"> </form> <form method="post" action="${pageContext.request.contextPath}/listormap"> 关键词 <input type="text" name="keyword"> 用户id<input type="text" name="user.id">姓名<input type="text" name="user.name"> 第一个集合<input type="text" name="userList[0].id"><input type="text" name="userList[0].name"> 第二个集合<input type="text" name="userList[1].id"><input type="text" name="userList[1].name"> 第一个map<input type="text" name="map[‘u1‘].id"><input type="text" name="map[‘u1‘].name"> 第二个map<input type="text" name="map[‘u2‘].id"><input type="text" name="map[‘u2‘].name"> <input type="submit" value="集合数据类型"> </form> <form method="post" action="${pageContext.request.contextPath}/date"> 自定义转换器 生日<input type="text" name="date"> <input type="submit" value="自定义转换器 生日"> </form> <a href="${pageContext.request.contextPath}/page?pageNo = 2" >对象类型</a> </body> </html>
package domain; import java.util.List; import java.util.Map; public class QueryVo { private String keyword; private User user; private List<User> userList; private Map<String,User> map; @Override public String toString() { return "QueryVo{" + "keyword=‘" + keyword + ‘\‘‘ + ", user=" + user + ", userList=" + userList + ", map=" + map + ‘}‘; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } public Map<String, User> getMap() { return map; } public void setMap(Map<String, User> map) { this.map = map; } } package domain; public class User { private int id; private String name; @Override public String toString() { return "User{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ‘}‘; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
package domain;
public class User {
private int id;
private String name;
@Override
public String toString() {
return "User{" +
"id=" + id +
", name=‘" + name + ‘\‘‘ +
‘}‘;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package controller; import domain.QueryVo; import domain.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Arrays; import java.util.Date; @Controller public class UserController { @RequestMapping("/data") public String data(String username,Integer age){ System.out.println(username); System.out.println(age); return "success"; } @RequestMapping("/object") public String object(User user){ System.out.println(user); return "success"; } @RequestMapping(path = "/array") public String array(Integer[] ids){ System.out.println(Arrays.toString(ids)); return "success"; } @RequestMapping("/listormap") public String listormap(QueryVo queryVo){ System.out.println(queryVo); return "success"; } }
<!-- 中文过滤器--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
package converters; import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ConverterDate implements Converter<String,Date> { @Override public Date convert(String birth) { SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd"); Date date =null; try { date = sdf.parse(birth); } catch (ParseException e) { e.printStackTrace(); } return date; } }
<!-- 配置处理器适配器和处理器映射器 ,可以对json格式解析,进行了方法的增强--> <mvc:annotation-driven conversion-service="conversionService"/> <!-- 配置自定义转换器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="converters.ConverterDate"/> </set> </property> </bean>
package controller; import domain.QueryVo; import domain.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Arrays; import java.util.Date; @Controller public class UserController { @RequestMapping("/date") public String date(Date date){ System.out.println(date); return "success"; } }
package controller; import domain.QueryVo; import domain.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Arrays; import java.util.Date; @Controller public class UserController { @RequestMapping("/page") // required 设置是否必须传递参数,默认值为true;如果设置了默认值,值自动改为false public String page(@RequestParam(name="pageNo", defaultValue ="1", required = false) Integer pageNum, @RequestParam(defaultValue = "5") Integer pageSize){ System.out.println(pageNum); System.out.println(pageSize); return "success"; } @RequestMapping("/header") public String header(@RequestHeader("cookie") String cookie){ System.out.println(cookie); return "success"; } @RequestMapping("/cookie") public String cookie(@CookieValue("JSESSIONID") String cookie){ System.out.println(cookie); return "success"; } @RequestMapping("/springAPI") public String springAPI(HttpServletRequest request, HttpServletResponse response, HttpSession session){ System.out.println(request); System.out.println(response); System.out.println(session); return "success"; } }
// 原始Servlet @RequestMapping("/servlet") public void servlet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;utf-8"); response.getWriter().println("我收到额"); request.setAttribute("username", "原始servlet"); // request.getRequestDispatcher("success.jsp").forward(request, response); }
@RequestMapping("/forward") public String forward(Model model) { model.addAttribute("username", "转发"); return "forward:success.jsp"; }
@RequestMapping("/redirect") public String redirect(Model model) { model.addAttribute("username", "重定向"); // 重定向的页面不会展示username的值 return "redirect:success"; }
//ModelAndView方式一 @RequestMapping("/model1") public ModelAndView model1() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("username", "modelAndView方式一"); modelAndView.setViewName("success"); return modelAndView; } //ModelAndView方式二 @RequestMapping("/model2") public ModelAndView model2(ModelAndView modelAndView) { modelAndView.addObject("username", "modelAndView方式二"); modelAndView.setViewName("success"); return modelAndView; }
@RequestMapping("/forward") public String forward(Model model) { model.addAttribute("username", "转发"); return "forward:success.jsp"; } @RequestMapping("/returnString") public String returnString() { return "success"; }
<!--方式一:在springmvc配置文件中指定放行资源--> <mvc:resources mapping="/js/**" location="/js/"/> <mvc:resources mapping="/css/**" location="/css/"/> <mvc:resources mapping="/img/**" location="/img/"/> <!--方式二(推荐):在springmvc配置文件中开启DefaultServlet处理静态资源--> <mvc:default-servlet-handler/>
原文:https://www.cnblogs.com/forever-fate/p/15024189.html