• 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方式就正常了。

  • 相关阅读:
    如何限制Dedecms文章或产品描述的字数
    Python 进阶 之 yield
    Python 进阶 之 contextlib模块
    JavaScript 之 定时器 延迟器
    Python 进阶 之 函数对象
    CSS入门之定义和应用格式
    Python 进阶 之 socket模块
    Python 进阶 之 闭包变量
    Python 进阶 之 else块 巧(慎)用
    Python 进阶 之 zip() izip() zip_longest函数
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3172174.html
Copyright © 2020-2023  润新知