JSP“三大请求传参方式,2021Java网络编程总结篇

中文乱码解决


如上我们可以看出,在我们传递了中文“张三”之后,在接收页面出现了乱码问题,解决办法如下:

1、在接收界面的代码中,在获取参数值之前增加如下代码:

request.setCharacterEncoding("utf-8");

2、在提交表单的action后的method属性需设置为“post”。

现在再来看一下:


 <body>

    <%

    request.setCharacterEncoding("utf-8");

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

    String tel = request.getParameter("tel");

     %>

     <font facr="楷体" size=5>

     获取到的信息是:<br>

     姓名:<%=name %>

     电话:<%=tel %>

     </font>

  </body>

效果如下:

JSP“三大请求传参方式,2021Java网络编程总结篇

3、在传递过来的中文参数中存在乱码问题,原因是中文参数采用了页面原有的“ISO-8859-1”编码,因此我们可能需要将传递过来的参数的编码格式修改为“UTF-8”格式,格式转换的代码如下:

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

三、网址或超链接传参

==========

利用网址或超链接传参的格式如下:

<a rel="nofollow" href=”超链接或网址?参数名1=参数值1&参数名2=参数值2….”>点击跳转</a>

传值界面代码:?


 <body>

   <a rel="nofollow" href="myjsp.jsp?name=zhangsan&tel=123456">点击传值</a>

 </body>

传值界面效果如下:

JSP“三大请求传参方式,2021Java网络编程总结篇

接收界面代码:


 <body>

<%

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

    String tel = request.getParameter("tel");

     %>

     <font facr="楷体" size=5>

     获取到的信息是:<br>

     姓名:<%=name %>

     电话:<%=tel %>

     </font>

  </body>

接收界面效果:

JSP“三大请求传参方式,2021Java网络编程总结篇

中文错误解决


但是当我们将传递的name值改为中文“张三”后,


<body>

   <a rel="nofollow" href="myjsp.jsp?name=张三&tel=123456">点击传值</a>

  </body>

点击传值出现如下界面:

JSP“三大请求传参方式,2021Java网络编程总结篇

原因是因为在超链接或网址传参中,参数属于网址的一部分,同时这一部分是属于URL编码的,不支持中文的utf-8,因此在传递中文时会显示网址错误,解决办法是将我们要传递的中文转成URL编码即可:

java.net.URLEncoder.encode("中文","utf-8")将中文转换成URL编码

提交界面代码如下:


<body>

   <a rel="nofollow" href="myjsp.jsp?name=<%=java.net.URLEncoder.encode("张三","utf-8") %>&tel=123456">点击传值</a>

  </body>

接收界面代码不变:

效果如下:

JSP“三大请求传参方式,2021Java网络编程总结篇

四、JSP子动作传参

==========

使用JSP的forward或include动作,利用传参数子动作实现参数的传递的方式,较其他两种方式有所不同,在该方式中用户可以根据需要在request对象中添加属性,然后在另一个JSP程序中获取到添加的数据,

具体的使用方法如下:

在传值页面使用request对象的setAttribute(“name”,obj)方法,可以把数据设定在request范围内,设置数据的方法格式为:

void request.setAttribute(“key”,object);

其中key为键,string类型,是要保存的数值的属性名。Object是要保存的参数值,属于object类型,

使用上面的方法在传值页面进行请求转发之后,在接收页面使用getAttribute(“name”)方法就可以获取到name属性下的值,获取数据的方法格式如下:

Object request.getAttribute(string name);

其中的参数name表示键名,与setAttribute(“name”,obj)方法中的name相对应,获取的参数类型由obj的类型决定。

参数传递界面代码:

?


 <body>

  <%

  request.setAttribute("name", "李四");

  request.setAttribute("age", 18);

   %>

   <jsp:forward page="myjsp.jsp"></jsp:forward>

  </body>

在使用该方式传参时,页面会自动跳转到指定页面。

获取参数页面代码:


<body>

    <%

    String name = (String)request.getAttribute("name");

    int age = (int)request.getAttribute("age");

     %>

     <font facr="楷体" size=5>

     获取到的信息是:<br>

     姓名:<%=name %>

     年龄:<%=age %>

     </font>

 </body>

效果如下:

结语

小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。

我们选择的这个行业就一直要持续的学习,又很吃青春饭。

虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。

小编整理的学习资料分享一波!

送给每一位想学习Java小伙伴,用来提升自己。想要资料的可以点击这里免费获取
在这里插入图片描述

本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!