后端数据转换为json
-
springmvc接收表单参数
user_form.jsp
<%-- post提交中文会存在中文乱码问题,配置字符编码过滤器来解决(web.xml) --%> <form action="/day4/submit_form" method="post"> 账号: <input type="text" name="userName"> <br> 密码: <input type="password" name="userPassword"> <br> <input type="submit" value="提交"> </form>
HelloController
@Controller public class HelloController { @RequestMapping("/hello") public String hello(){ return "index.jsp"; } /** * springmvc接收前端的参数: * 1.接收的变量要跟前端输入框的name一致 * 2.当接收变量过多时就会比较麻烦,所以使用对象接收(对象的属性和input框的name值一致) */ @RequestMapping("/submit_form") // public String submitForm(String userName,String userPassword){ // v1----- public String submitForm(User user){//v2------对象的属性跟输入框name一样 System.out.println(user); return "/index.jsp";//表示从服务器的根路径开始取 } }
推荐使用对象接收表单参数:但是属性必须跟name一致 ⭐⭐⭐⭐⭐⭐
return “/index.jsp”:最前面加/表示从服务器的根路径开始取
-
解决post请求中文乱码的问题
<filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
springmvc解决访问html、图片等非jsp文件报错404的问题
直接访问jsp正常,访问其他html图片等非jsp文件报404是因为jsp有专门的jspServlet处理,而html等没有,所以在spring-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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--扫描--> <context:component-scan base-package="com.qianfeng"></context:component-scan> <!--释放所有的静态资源--> <mvc:default-servlet-handler/> <!--注解驱动标签: 将前端浏览器请求url与后端controller中的requestMapping映射相匹配 解决添加释放静态资源之后访问后端映射报404的问题 --> <mvc:annotation-driven/> </beans>
以上为springmvc请求前端后端完整配置
-
Json:
-
FastJson转换器的使用(alibaba)
-
导入fastjson依赖
<!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>
-
spring-mvc.xml
<mvc:annotation-driven> <mvc:message-converters register-defaults="false"> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=utf-8</value> <!--为了避免低版本ie浏览器获取json数据时出现文件下载的情况--> <value>text/html;charset=utf-8</value> </list> </property> <!--解决当属性为null时,如何返回数据--> <property name="features"> <list> <value>WriteNullNumberAsZero</value> <value>WriteNullStringAsEmpty</value> <value>WriteNullListAsEmpty</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
-
代码测试
@Controller @RequestMapping("/json") public class JsonController { /** * 返回字符串 */ @RequestMapping("/string") @ResponseBody //1. 不再返回页面,而是返回字符串 public String string(){ return "index嘻嘻"; } /** * 返回user对象 */ @RequestMapping("/object") @ResponseBody //返回json数据需要添加此注解 public User object(){ User user = new User(); user.setUserName("张三"); // user.setUserPassword("123456"); return user; //返回对象的json格式需要配置json转换器 } /** * 返回user集合 */ @RequestMapping("/userlist") @ResponseBody //返回json数据需要添加此注解 public List<User> userList(){ User user = new User(); user.setUserName("张三"); user.setUserPassword("123456"); User user2 = new User(); user2.setUserName("李四"); user2.setUserPassword("123456"); List<User> userList = new ArrayList<>(); userList.add(user); userList.add(user2); return userList; } }
-
3456");
List userList = new ArrayList<>();
userList.add(user);
userList.add(user2);
return userList;
}
}
```