jsp中四种传递参数的方法

今天老师讲了jsp中四种传递参数的方法,我觉得总结一下,挺好的,以备后用!

1、form表单

2、request.setAttribute();和request.getAttribute();

3、超链接:<a herf="index.jsp"?a=a&b=b&c=c>name</a>

4、<jsp:param>

下面一一举例说明:

1、form表单

form.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          form.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <h2 style="font-family:arial;color:red;font-size:25px;text-align:center">登录页面</h2>
        <form action="result.jsp" method="get" align="center">
          姓名:<input type="text" name="name" size="20" value="" maxlength="20"><br/>
          密码:<input type="password" name="password" size="20" value="" maxlength="20"><br/>
           <!--在爱好前空一个空格,是为了排版好看些-->
           爱好:<input type="checkbox" name="hobby" value="唱歌">唱歌
             <input type="checkbox" name="hobby" value="足球">足球
             <input type="checkbox" name="hobby" value="篮球">篮球<br/><br/>
          <input type="submit" name="submit" value="登录">
          <input type="reset" name="reset" value="重置"><br/>
        </form>
      </body>
    </html>

result.jsp:

    <%@page language="java" import="java.util.*" pageEncoding="GB2312"%>
    <html>
      <head>
        <title>
          result.jsp file
        </title>
      </head>
      <body bgcolor="ffffff">
        <%
         request.setCharacterEncoding("GB2312");
         String name=request.getParameter("name");
         name=new String(name.getBytes("iso-8859-1"),"GB2312");
         String pwd=request.getParameter("password");
         String[] hobby=request.getParameterValues("hobby");//注意这里的函数是getParameterValues()接受一个数组的数据
        %>
        <%
          if(!name.equals("") && !pwd.equals(""))
          {
        %>
            您好!登录成功!<br/>
            姓名:<%=name%><br/>
            密码:<%=pwd%><br/>
            爱好:<%
                 for(String ho: hobby)
                 {
                  ho=new String(ho.getBytes("iso-8859-1"),"GB2312");
                  out.print(ho+" ");
                 }
                %>
        <%
          }
          else
          {
        %>
              请输入姓名或密码!
        <%
         }
        %>
      </body>
    </html>

注意:form表单的提交方式为get,在参数传递时会遇到中文乱码的问题,一个简单的解决方法是,将接受到的字符串先转换成一个byte数组,再用String构造一个新的编码格式的String,如:

1. String name=request.getParameter("name"); 

2. name=new String(name.getBytes("iso-8859-1"),"GB2312"); 

如果form表单的提交方式为post,解决乱码问题的简单办法是,使用 request.setCharacterEncoding("GB2312");设置request的编码方式。

为什么会出现中文乱码问题呢?因为Tomcat服务器默认的系统编码方式为iso-8859-1,你传递参数给服务器时,使用的是默认的iso-8859-1的编码方式,但是服务器向你返回信息时,是按page指令中设置的编码方式,如:<%@page language="Java" import="java.util.*" pageEncoding="GB2312"%>,这样就混合了两种编码方式,所以会出现乱码,所以解决之道就是统一传递和接收的编码方式。

2、request.setAttribute()和request.getAttribute()

set.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          set.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <%
          request.setAttribute("name","心雨");
        %>
        <jsp:forward page="get.jsp"/>
      </body>
    </html> 

get.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          get.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <%
         out.println("传递过来的参数是:"+request.getAttribute("name"));
        %>
      </body>
    </html> 

request.setAttribute()和request.getAttribute()是配合<jsp:forward>或是include指令来实现的。

3、超链接:<a herf="index.jsp?a=a&b=b&c=c">name</a>

href.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          href.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <a href="getHerf.jsp?name=心雨&password=123" rel="external nofollow" >传递参数</a>
      </body>
    </html> 

getHref.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          getHref.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <%
          String name=request.getParameter("name");
          name=new String(name.getBytes("iso-8859-1"),"gb2312");
          out.print("name:"+name);
        %>
        <br/>
        <%
          out.print("password:"+request.getParameter("password"));
        %>
      </body>
    </html>

这种传递参数的方法和form表单的get方式类似,是通过地址栏传递的参数,其乱码解决方法也和form 的get方式一样。

4、<jsp:param>

param.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          param.jsp file
        </title>
      </head> 

      <body style="background-color:lightblue"> 

        <%request.setCharacterEncoding("GB2312");%>
        <jsp:forward page="getParam.jsp">
          <jsp:param name="name" value="心雨"/>
          <jsp:param name="password" value="123"/>
        </jsp:forward>
      </body>
    </html>

getParam.jsp:

    <%@page contentType="text/html; charset=GB2312"%>
    <html>
      <head>
        <title>
          getParam.jsp file
        </title>
      </head>
      <body style="background-color:lightblue">
        <%
          String name=request.getParameter("name");
          out.print("name:"+name);
        %>
        <br/>
        <%
          out.print("password:"+request.getParameter("password"));
        %>
      </body>
    </html> 

这里发现了一个奇怪的问题,还是在中文乱码的问题上,在form表单的例子中,如果传递方式为post,则只需要在接收参数的页面设置request的编码方式就可以了,即request.setCharacterEncoding("GB2312");,注意是在接收参数的页面,如果将该句放到form表单里,那么不起作用,仍然是乱码。而在本例中,为了使传递的参数不出现乱码,却是将request.setCharacterEncoding("GB2312");放在发送参数的页面中,才会正常显示中文,放在接收参数的页面中,不起作用。也许这就是<jsp:param>和form表单传递参数不同的地方。为什么会有这个不同呢?可能是因为form表单中的参数是由客户端传送到服务端上的,需要经过一个request的打包过程,但是<jsp:param>传递的参数本身就是在服务器端的,不需要经历由客户端到服务端这么一个过程,但是服务器里的参数传递是这么回事呢?这个问题,我不知道了!真是知识是一个扩大的圆圈,你知道的越多,那么不知道的就越多!努力吧!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • JSP向后台传递参数的四种方式总结

    Jsp页面传值的方法 一.通过Form表单提交传值 客户端通过Form表单提交到服务器端,服务器端通过 Java代码 request.getParameter(String xx); 来取得参数(xx)为参数名称. 通过get/post方式进行提交 二.通过隐藏域传值 通过在表单中加入一个隐藏域来提交到服务器端,这种方式的好处是可以在客户端加入一些自己想要加入的参数,以便得到相应的值. 客户端代码: Java代码 <input type="hidden" name="i

  • JSP中js传递和解析URL参数以及中文转码和解码问题

    1.传递参数: 复制代码 代码如下: var pmt = 'sensor='+ encodeURI(encodeURI(sensor))+'&device='+encodeURI(encodeURI(device))+'&instrument='; pmt += encodeURI(encodeURI(instrument))+'&n='+n+'&addDate='+addDate; top.location.href = 'jsp/print/diagnosticAnaP

  • JSP页面中文传递参数使用escape编码

    今天在使用中文传递参数时,遇到死活编码转不过去,于是想到了用escape,在使用后 request.getParameter接收不到参数,于是想着怎么能够接收到参数. 经过试验,通过 复制代码 代码如下: zbtmp=escape(escape(zbtmp));//加密2次danielinbiti var params = "name="+zbtmp; window.open('showzsgraph.jsp?params); 然后可以通过request.getParameter获取到

  • JSP页面中文参数的传递(get和post方法分析)

    在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如: http://website/test1.jsp?act=add&type=苹果&param=%20D%20B ◆FORM方式 例如: 复制代码 代码如下: ﹤form name=test   mehtod="post"﹥   ﹤input type=hidden name=text2 value="中文"﹥   ﹤input type=text na

  • JSP跨iframe如何传递参数实现代码

    表单与操作页面分离 按钮按下,click 或者onclick事件触发 传递一个唯一性的参数至子页面JSP, 子页面内,负责查询与判断逻辑, JSP:FORWARD尝试过,直接报错 复制代码 代码如下: <script type="text/JavaScript"> function tigger() { var f_application =1; <jsp:forward page="input.jsp"> <jsp:param nam

  • jsp中URL传递中文参数的处理方法

    在页面的url中使用encodeURI(encodeURI(中文)),对中文进行编码,并在服务器的java程序中使用URLDecoder.decode(中文, "UTF-8")进行解码即可; 如果url中需要传递+.#.?等特殊符号,可以使用encodeURIComponent(encodeURIComponent(中文)),服务器解码方法跟encodeURI的解码相同.

  • javascript通过url向jsp页面传递中文参数导致乱码解决方案

    2013-1-16 10:35:49 org.apache.tomcat.util.http.Parameters processParameters 警告: Parameters: Character decoding failed. Parameter 'id' with value '%u8BA2%u5355' has been ignored. Note that the name and value quoted here may corrupted due to the failed

  • JSP 传递中文参数的例子

    复制代码 代码如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <%@ page language="java" co

  • JSP页面中超链接传递中文参数出现乱码问题解决方法

    本文实例讲述了JSP页面中超链接传递中文参数出现乱码问题解决方法.分享给大家供大家参考,具体如下: 这里分析超链接传递中文参数,在接受页面中出现乱码问题的解决方法. 解决方法: 在接受页面里可以如下处理, 复制代码 代码如下: <%=new String(request.getParameter("变量名字").getBytes("ISO-8859-1")) %> 注意这里用的是 new String() 创建一个新的字符串 例题: 页面一: <h

  • jsp中利用jquery+ajax在前后台之间传递json格式参数

    经过一段时间的实验琢磨,终于将前后台之间的参数传递搞定了,实验所用工具myeclipse+structs1.2. 总结:容易出错的地方:1.ajax中data的格式一定要写对,这里举了两种形式,一种是 data:{参数:""} 另一种是 data:"参数="+变量. 2.后台传递到前台数据转化为json格式,步骤要掌握好. 3.在js使用jquery必须要引用进来,否则会不执行jquery语句,这个问题困扰了我半天才解决掉,菜鸟的悲哀啊.jquery引用流程如下:网

随机推荐