jee、spring、spring mvc、mybatis 学习(二)
2016-08-13 09:52
381 查看
转载请申请转载地址:http://blog.csdn.net/qq5132834/article/details/52197771
在本节将着重页面【POST】方法提交、jquery中【ajax】请求【json】数据中文乱码的解决。
1、引入json的包文件【nutz-1.b.52.jar】;
2、在【web.xml】文件添加如下数据:
【web.xml】文件中的【filter】、【filter-mapping】主要用来处理post请求的数据格式,包括【中文乱码】等问题:
3、在【mvc-servlet.xml】文件中修改如下:
在【mvc-servlet.xml】文件中新增的【AnnotationMethodHandlerAdapter】bean用来处理【ajax】数据请求的格式,包括【中文乱码的解决】。
4、新建【com.zuk.model】包,新建一个【Person.java】类如下:
主要目的在于可以将【form】表单中的【name】属性值直接映射到【Person,java】对象中,注意【name】属性值,必须与【Person.java】的private变量一致,并添加get、set方法。
5、在原来的【HelloController.java】类中增加如下两个方法:一个是用来跳转;一个用来返回【json】数据。
从上面的代码里可以看出:【@ModelAttribute Person person 】用来进行form表单与person对象的映射实现。
6、在项目的【WebContent】下新建一个【js】文件夹,引入【jquery-1.8.2.min.js】文件。注意js、css、jpg等资源文件不要放置在【WEB-INF】文件夹下,不然这些文件的加载会通过前置控制器,给资源加载带来诸多麻烦。
7、在【hello.jsp】文件中新增一个【form】表单、【submit】提交按钮、【ajax】请求按钮,内容如下:
8、源代码地址:http://download.csdn.net/detail/qq5132834/9602367
在本节将着重页面【POST】方法提交、jquery中【ajax】请求【json】数据中文乱码的解决。
1、引入json的包文件【nutz-1.b.52.jar】;
2、在【web.xml】文件添加如下数据:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ZZZ</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:sources/mvc-servlet.xml</param-value> <!-- 指定mvc-servlet.xml文件路径,在类src/sources路径下面 --> </init-param> <load-on-startup>1</load-on-startup> <!-- load-on-startup:表示启动容器时初始化该Servlet --> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>*.xhtml</url-pattern> <!-- 表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的 --> </servlet-mapping> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>*.json</url-pattern> <!-- “*.json”表示拦截所有以json为扩展名的请求。 --> </servlet-mapping> <servlet-mapping> <servlet-name>mvc</servlet-name> <url-pattern>*.xml</url-pattern> <!-- “*.xml”表示拦截所有以xml为扩展名的请求。 --> </servlet-mapping> <filter> <filter-name>encoding</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
【web.xml】文件中的【filter】、【filter-mapping】主要用来处理post请求的数据格式,包括【中文乱码】等问题:
<filter> <filter-name>encoding</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、在【mvc-servlet.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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName" > <context:component-scan base-package="com.zuk.controllers" /> <!-- 扫描com.zuk.controllers这个包里的所以controller累 --> <!-- ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF"/><!-- 也可以放空 --> <!-- <property name="prefix" value="/WEB-INF/jsp/"/> --> <!-- 制定前缀字符串 --> <property name="suffix" value=".jsp"/> <!-- 跳转后添加后缀 --> </bean> <!-- ajax请求中文乱码解决 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> </beans>
在【mvc-servlet.xml】文件中新增的【AnnotationMethodHandlerAdapter】bean用来处理【ajax】数据请求的格式,包括【中文乱码的解决】。
<!-- ajax请求中文乱码解决 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
4、新建【com.zuk.model】包,新建一个【Person.java】类如下:
主要目的在于可以将【form】表单中的【name】属性值直接映射到【Person,java】对象中,注意【name】属性值,必须与【Person.java】的private变量一致,并添加get、set方法。
package com.zuk.model; public class Person { public String usid; public String pawd; public String comp; public String getUsid() { return usid; } public void setUsid(String usid) { this.usid = usid; } public String getPawd() { return pawd; } public void setPawd(String pawd) { this.pawd = pawd; } public String getComp() { return comp; } public void setComp(String comp) { this.comp = comp; } }
5、在原来的【HelloController.java】类中增加如下两个方法:一个是用来跳转;一个用来返回【json】数据。
package com.zuk.controllers; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.nutz.json.Json; import org.nutz.lang.util.NutMap; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.zuk.model.Person; /** * @author 513283439@qq.com * */ @Controller @RequestMapping(value="HelloController") public class HelloController { @RequestMapping(value = "/hello.xhtml") public String hello(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @RequestParam(value="message", required=false) String message){ System.out.println(message); model.addAttribute("message", message); return "/jsp/hello"; /** * 跳转的实际路径要算上mvc-servlet.xml中配置的 * 前缀:/WEB-INF; * 后缀:.jsp * 实际路径:/WEB-INF/jsp/hello.jsp * */ } /** * <br>主要解决两个问题: * <br>1、POST方法中文乱码问题; * <br>2、将前端表单里面的name属性的值直接映射到java对象中。 * */ @RequestMapping(value = "/actionForm.xhtml") public String actionForm(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @ModelAttribute Person person ){ System.out.println(person.getUsid()); System.out.println(person.getPawd()); System.out.println(person.getComp()); model.addAttribute("usid", "POST中文乱码-->>"+person.getUsid()); model.addAttribute("pawd", "POST中文乱码-->>"+person.getPawd()); model.addAttribute("comp", "POST中文乱码-->>"+person.getComp()); return "/jsp/hello"; } /** *<br>主要解决ajax请求返回json数据烈性 * */ @ResponseBody @RequestMapping(value = "/ajaxForm.json", produces = "text/html;charset=UTF-8") public String ajaxForm(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @ModelAttribute Person person ){ System.out.println(person.getUsid()); System.out.println(person.getPawd()); System.out.println(person.getComp()); model.addAttribute("usid", "ajaxForm-->>"+person.getUsid()); model.addAttribute("pawd", "ajaxForm-->>"+person.getPawd()); model.addAttribute("comp", "ajaxForm-->>"+person.getComp()); NutMap result = NutMap.NEW(); result.put("data", person); String json = Json.toJson(result); System.out.println(json); return json; } }
从上面的代码里可以看出:【@ModelAttribute Person person 】用来进行form表单与person对象的映射实现。
6、在项目的【WebContent】下新建一个【js】文件夹,引入【jquery-1.8.2.min.js】文件。注意js、css、jpg等资源文件不要放置在【WEB-INF】文件夹下,不然这些文件的加载会通过前置控制器,给资源加载带来诸多麻烦。
7、在【hello.jsp】文件中新增一个【form】表单、【submit】提交按钮、【ajax】请求按钮,内容如下:
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>【hello】</title> <script type="text/javascript" src="../js/jquery-1.8.2.min.js"></script> <script type="text/javascript"> function ajaxClick(){ $.ajax({ url: '../HelloController/ajaxForm.json', type:'post', dataType: 'json', timeout: 5000, contenttype :"text/html;charset=utf-8", data: { usid:frm.usid.value, pawd:frm.pawd.value, comp:frm.comp.value }, success:function(json) { //console.log(json); //console.log(json.data.usid); //console.log(json.data.pawd); //console.log(json.data.comp); alert(json.data.usid+"/"+json.data.pawd+"/"+json.data.comp); }, error:function() { alert("异常!"); } }); } </script> </head> <body> ${message} <!-- ${message}表示从分发器controller传递过来的模型数据 --> <!-- 跳转 --> <form action="../HelloController/actionForm.xhtml" name="frm" method="post"> <table> <tr> <td>用户名</td> <td><input type="text" name="usid" value="${usid}" /></td> </tr> <tr> <td>密码</td> <td><input type="text" name="pawd" value="${pawd}" /></td> </tr> <tr> <td>公司</td> <td><input type="text" name="comp" value="${comp}" /></td> </tr> <tr> <td> <input type="submit" value="提交" /> </td> <td> <input type="button" value="ajax" onclick="ajaxClick()" /> </td> </tr> </table> </form> </body> </html>
8、源代码地址:http://download.csdn.net/detail/qq5132834/9602367
相关文章推荐
- jee、spring、spring mvc、mybatis 学习(一)
- jee、spring、spring mvc、mybatis 学习(七)
- jee、spring、spring mvc、mybatis 学习(三)
- jee、spring、spring mvc、mybatis 学习(五)
- jee、spring、spring mvc、mybatis 学习(九)
- jee、spring、spring mvc、mybatis 学习(六)
- jee、spring、spring mvc、mybatis 学习(十)
- jee、spring、spring mvc、mybatis 学习(八)
- jee、spring、spring mvc、mybatis 学习(四)
- SSM框架(Spring Spring MVC Mybatis)基础入门学习3——Mybits入门实例(实例免费下载!)
- Spring学习5_ Spring MVC与mybatis学习-----参数配置文件说明
- Spring学习6_Spring MVC与mybatis学习-----执行路程详解
- Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
- SSM框架:Spring、Spring MVC、MyBatis学习
- MyBatis-Spring 学习笔记一 SqlSessionFactoryBean以及映射器类
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
- spring mvc学习(二,该死的spring tool suite 的编码)
- spring学习(1)Spring MVC框架搭建
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql