jee、spring、spring mvc、mybatis 学习(二)
来源:互联网 发布:淘宝纳米碳溶胶 编辑:程序博客网 时间:2024/06/06 19:27
转载请申请转载地址:http://blog.csdn.net/qq5132834/article/details/52197771
在本节将着重页面【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对象的映射实现。
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
0 0
- 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 学习(九)
- jee、spring、spring mvc、mybatis 学习(十)
- Spring MVC+Mybatis 框架整合(二)
- Spring MVC学习(二)
- spring mvc+mybatis笔记(二)
- spring mvc+spring+mybatis+maven整合篇(二)
- spring MVC+mybatis+spring security笔记<二>
- Spring Boot学习(MVC-MyBatis)
- Spring MVC学习二
- 学习spring mvc 二
- 【51Nod】1672 - 区间交(线段树 & 贪心)
- 递归删除文件
- 构造函数
- HDU 2544 最短路 Dij
- RSA 算法的使用
- jee、spring、spring mvc、mybatis 学习(二)
- nodejs安装任何模块失败问题-error Windows_NT 6.1.7601
- 162. Find Peak Element
- go的变量、常量、类型别名
- Android .不一样的辅助服务,打开一个全新视角
- FZU 2150 Fire Game 枚举BFS
- MFC中listControl控件右键双击响应事件
- Python3中替代Python2中cmp()函数的新函数(gt,ge,eq,le,lt)
- JS学习笔记-CSS篇(一)