springMVC之数据传递
2013-07-04 19:10
302 查看
在前面介绍过从controller中向页面中传数据,可以通过HttpServletRequest进行setAttribute可以将数据放入request中。并且可以在jsp页面使用el表达式获取数据。
那么怎么从jsp页面往后台传数据呢。
首先我们需要创建一个jsp页面进行数据的搜集:
annotationTest.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'annotationTest.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<script type="text/javascript">
function clickButton(){
var form = document.forms[0];
form.action="showInfo";
form.method="GET";
form.submit();
}
</script>
<body>
<form action="">
姓名:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
<input type="button" onclick="clickButton();" value="提交"/>
</form>
</body>
</html>
在这里用button和js来进行提交主要是为了好改提交方式可以做get与post的测试。
将数据用javascript传输到controller后,controller:
package com.yx.controller.annotation;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user/data")
public class GetAndShowInfo {
@RequestMapping("/showInfo")
public String showUserInfo(String name,int age,HttpServletRequest request){
request.setAttribute("name", name);
request.setAttribute("age", age);
return "/showInfo";
}
@RequestMapping("/getInfo")
public String getUserInfo(){
return "/getInfo";
}
}
最后,会跳到getInfo页面显示数据。
在这里会出现乱码。
需要设置两个地方:
1.在tomcat中找到server.xml文件把其中
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
这样子get方式提交就不会出现乱码。
2.在web.xml中加入如下代码:
<!-- 修改编码 -->
<filter>
<filter-name>projectEncoding</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>projectEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这一段时springMVC自带的拦截器,并将编码方式强制改为utf-8,这样post方式就正常了。
那么怎么从jsp页面往后台传数据呢。
首先我们需要创建一个jsp页面进行数据的搜集:
annotationTest.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'annotationTest.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<script type="text/javascript">
function clickButton(){
var form = document.forms[0];
form.action="showInfo";
form.method="GET";
form.submit();
}
</script>
<body>
<form action="">
姓名:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
<input type="button" onclick="clickButton();" value="提交"/>
</form>
</body>
</html>
在这里用button和js来进行提交主要是为了好改提交方式可以做get与post的测试。
将数据用javascript传输到controller后,controller:
package com.yx.controller.annotation;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user/data")
public class GetAndShowInfo {
@RequestMapping("/showInfo")
public String showUserInfo(String name,int age,HttpServletRequest request){
request.setAttribute("name", name);
request.setAttribute("age", age);
return "/showInfo";
}
@RequestMapping("/getInfo")
public String getUserInfo(){
return "/getInfo";
}
}
最后,会跳到getInfo页面显示数据。
在这里会出现乱码。
需要设置两个地方:
1.在tomcat中找到server.xml文件把其中
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
这样子get方式提交就不会出现乱码。
2.在web.xml中加入如下代码:
<!-- 修改编码 -->
<filter>
<filter-name>projectEncoding</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>projectEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这一段时springMVC自带的拦截器,并将编码方式强制改为utf-8,这样post方式就正常了。
相关文章推荐
- SpringMVC之后台接收参数与前台传递数据
- Springmvc提供的传递数据的方式
- 22SpringMvc_jsp页面上的数据传递到控制器的说明
- springMVC后台传递数据的三种方法
- Angularjs cors 用get、post方法与springmvc后传递json数据的配置
- springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
- springmvc和js前端的数据传递和接收方式
- ajax传递json数据,springmvc后台就收json数据
- springMVC和easyUI结合使用(前后台通过json传递数据)的实例
- SpringMVC 页面数据传递到后台
- springMVC参数的传递方式(1.通过@PathVariabl获取路径参数,2.@ModelAttribute获取数据,3.HttpServletRequest取参,4@RequestParam)
- Vue传递数据到后台SpringMVC接收解析返回
- Springmvc中 同步/异步请求参数的传递以及数据的返回
- SpringMVC的controller向jsp传递数据的五种方式详解
- springMVC框架下JQuery传递并解析Json数据
- springMVC:将controller中数据传递到jsp页面
- springMVC 前台传递json格式数据到后台
- springMVC 中接收前端传递的对象、数组等数据的方式详解
- SpringMVC之Controller传递数据与页面
- springmvc学习笔记(七)数据传递及乱码问题