springMVC之数据传递
在前面介绍过从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方式就正常了。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号