jsp页面传值取值问题request.getParameter无法取到jsp页面的值

 

jsp页面传值取值问题request.getParameter无法取到jsp页面的值



1、首先确定 <%=id%>和 <%=name%> 两不为NULL
2、再次确定
<input type="hidden" name="id" id="id" value=" <%=id%>">  

<input type="hidden" name="name" id="name" value=" <%=name%>">  
是放在form 中

 

 

在开发一个MIS系统中,部分页面中有需要上传文件的字段,相信大家在开发中也经常遇到这样的情况.因为要上传文件,所以FORM标记中的ENCTYPE="multipart/form-data",可是这样的话,当你在servlet里面用request.getParameter()方法无论如何都只是获得null值,没有办法只好在网上搜索一下,其中收集到了不同的方法,贴出来以备查询. 
方法一 
   用jspsmartupload组件实现文件上传的 
   这个方法是我使用的方法,所以把主要代码贴了出来

老杨发布新网站http://utton.net啦!提供网站、空间、域名服务,还原新老客户光顾,都来看看哦!

Java代码
  1. SmartUpload upload = new SmartUpload();   
  2.      try{   
  3.      upload.initialize(config, request, response);   
  4.     // 允许上传的文件类型   
  5.      upload.setAllowedFilesList("doc,xls,");   
  6.     // 拒绝上传的文件类型   
  7.      upload.setDeniedFilesList("exe,bat,jsp");   
  8.     // 允许上传文件的单个最大大小   
  9.      upload.setMaxFileSize(1024 * 1024 * 20);   
  10.     // 允许上传文件的最大大小总和   
  11.     // upload.setTotalMaxFileSize(1024*1024*10);   
  12.     //上传数据   
  13.      upload.upload();   
  14.      }   
  15.     catch (SmartUploadException e){   
  16.          e.printStackTrace();   
  17.         return;   
  18.      }   
  19.   
  20.     Request req = upload.getRequest();   
  21.      String spid=(String)req.getParameter("teacherId");   
  22.          //.....   
  23.          //To do something  

这样就可以取得对应的值了. 
<think>嗯,用户现在遇到了一个问题,就是在使用JSP获取浏览器地址栏中的中文参数时出现乱码。之前已经给过解决方案,现在用户再次提问,可能是在实际操作中遇到了困难,或者之前的步骤没有完全解决问题。需要仔细分析用户当前的问题,看看是否有遗漏的地方。 首先,用户提供的代码是`'<%=request.getParameter("sponsorName")%>'`,这说明他们直接在JSP页面中使用request.getParameter获取参数,而没有进行编码处理。根据之前的回答,用户可能没有正确配置Tomcat的URI编码,或者前端没有正确编码参数。 接下来要考虑用户可能的场景。用户可能是在开发一个使用MiniUI的JSP应用,通过URL递中文参数,但后端获取时出现乱码。这种情况常见于GET请求,因为POST请求通常可以通过设置字符编码来处理,而GET请求的参数在URL中,处理方式不同。 用户之前可能已经尝试了前端编码和Tomcat配置,但依然有问题,或者可能没有正确执行这些步骤。例如,可能忘记重启Tomcat,或者过滤器配置不正确。另外,用户可能在使用MiniUI的Ajax请求时,没有正确设置contentType,导致编码问题。 需要检查用户是否完成了所有步骤:前端是否正确使用encodeURIComponent,Tomcat的server.xml是否配置了URIEncoding为UTF-8,是否有添加字符编码过滤器,JSP页面头部是否有设置UTF-8,以及MiniUI的Ajax请求是否设置了正确的contentType。 另外,用户可能没有意识到不同浏览器的编码方式可能有差异,或者服务器端的默认编码不是UTF-8。还有可能在获取参数后没有进行手动转码,特别是在没有使用过滤器的情况下,可能需要手动将参数从ISO-8859-1转换为UTF-8。 还要考虑用户是否在多个环节中出现了问题。例如,前端编码正确,但Tomcat配置没有生效,或者过滤器虽然配置了,但被其他配置覆盖了。此外,可能需要检查服务器的版本,某些旧版本的Tomcat可能需要不同的配置方式。 最后,用户可能需要一个更简洁的解决方案,或者分步骤的验证方法,来逐步排查问题所在。例如,先确认前端编码是否正确,再检查Tomcat配置,然后测试后端获取参数的方式,最后处理MiniUI的特殊情况。</think>在JSP中通过`request.getParameter("sponsorName")`获取URL中文参数乱码的解决方案如下(按优先级排序): --- ### 一、强制解码(应急方案) 直接在取值时进行ISO-8859-1到UTF-8的字节转换: ```jsp <% String sponsorName = new String( request.getParameter("sponsorName").getBytes("ISO-8859-1"), "UTF-8" ); %> <%= sponsorName %> ``` --- ### 二、Tomcat配置(根本解决方案) 1. 打开`conf/server.xml` 2. 找到HTTP连接器配置段: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> <!-- 关键参数 --> ``` 3. 重启Tomcat服务 --- ### 三、前端编码规范 发送请求前必须对中文进行两次编码: ```javascript // JavaScript示例(GET请求) let param = encodeURIComponent(encodeURIComponent("中文参数")); location.href = "page.jsp?sponsorName=" + param; ``` --- ### 四、服务端过滤器(通用解决方案) 1. 创建`EncodingFilter.java`: ```java public class EncodingFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { req.setCharacterEncoding("UTF-8"); res.setCharacterEncoding("UTF-8"); chain.doFilter(req, res); } } ``` 2. 在`web.xml`中配置: ```xml <filter> <filter-name>encodingFilter</filter-name> <filter-class>com.yourpackage.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` --- ### 五、JSP页面声明 确保所有JSP页面顶部有: ```jsp <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%> ``` --- ### 六、浏览器调试验证 通过浏览器开发者工具检查: 1. 网络请求中查看实际发送的URL参数是否为`%E4%B8%AD%E6%96%87`形式 2. 确认Response Headers包含`Content-Type: text/html;charset=UTF-8` --- ### 不同场景处理建议 | 场景 | 解决方案组合 | |---------------------|------------------------------| | 临时快速修复 | 方案一 + 方案三 | | 全新项目部署 | 方案二 + 方案四 + 方案五 | | 第三方服务器环境 | 方案一 + 方案三 + 方案四 | --- 通过以上方法组合使用,可彻底解决URL中文参数乱码问题。建议优先采用**Tomcat配置+前端双重编码**的方案,这是最稳定的解决方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值