`

关于tomcat中getParameterValues处理方式的疑问

 
阅读更多

先上代码

@Override
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException
	{
		Enumeration e = req.getParameterNames();
		String attributeName;
		String attributeValues[];
		output(req);	
		while (e.hasMoreElements()) {
			attributeName = (String) e.nextElement();
			attributeValues = req.getParameterValues(attributeName);
//			a = req.getParameter(attributeName);
			attributeValues[0] = "hasUpdated";
		}
		output(req);	
		chain.doFilter(req, resp);
	}

 问题是第9行的代码是否有改变请求中的参数值?

测试了多个tomcat,在tomcat6.0.13中会改变,看了下tomcat的源码,不会改变参数值的代码都是这样写的,采用的是ApplicationHttpRequest

@Override
    public String[] getParameterValues(String name) {

        parseParameters();
        Object value = parameters.get(name);
        if (value == null)
            return null;
        else if (value instanceof String[])
            return ((String[]) value);
        else if (value instanceof String) {
            String values[] = new String[1];
            values[0] = (String) value;
            return (values);
        } else {
            String values[] = new String[1];
            values[0] = value.toString();
            return (values);
        }

    }

 会去new一个新的字符串数组进行保存,但是tomcat6.0.13并不会进入这个request。

 

后续会深入研究下tomcat的源码,及java string对象的剖析。

分享到:
评论

相关推荐

    关于\"form表单提交数据编码方式和tomcat接受数据解码方式的思考\"一文的纠错

    本文将纠正“关于'form表单提交数据编码方式和tomcat接受数据解码方式的思考'”一文中可能存在的错误,并深入探讨相关知识点。 首先,表单数据的编码方式主要取决于`<form>`标签的`enctype`属性。默认情况下,如果...

    java getParameterValues

    从提供的部分文件内容来看,文章主要介绍了在Java中如何使用`getParameterValues`方法处理表单数据,尤其关注于多值参数的获取。下面,我们将深入探讨这一知识点。 ### Java中的`getParameterValues`详解 在Java ...

    Tomcat 中文问题及解决方法总结

    本文总结了Tomcat 4.0 和 4.1 版本下常见的中文问题及其解决方案,包括JSP页面中文显示问题、POST和GET方式提交表单中文乱码问题以及Cookie中中文字符处理问题。通过以上方法,可以有效解决Tomcat中文环境中出现的...

    Tomcat和weblogic中文乱码问题解决方案

    例如,在 Tomcat 或 WebLogic 服务器中,request 和 response 的编码方式可能不同,这将导致中文乱码问题的出现。 解决方案 解决中文乱码问题最好的方法是增加过滤器。关键代码只有三行: ```java response.set...

    模拟tomcat源码

    自己写的一个模拟tomcat,模拟了tomcat的一部分功能,包过request 的getParameter、getParameterValues,response的getWriter,doget,dopost..

    request.getParameterMap()返回的是String []数组1

    `getParameterMap()`提供了一种方便的方式来遍历所有的请求参数,并且能够处理同名参数的情况。`getParameter()`适合只关注单个值的情况,而`getParameterValues()`则适用于需要处理一组相同名称参数的场景。 为了...

    Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作_Java_杨秀璋的专栏-CSDN博客1

    本文将深入探讨Java Web开发中的Servlet在处理表单提交以及与数据库交互的基础知识。我们将通过一个具体的例子来展示如何使用MyEclipse、Tomcat和MySQL进行集成开发。 1. **Servlet表单提交** 在Java Web应用中,...

    checkBox分别处理选中与不选中

    这种处理方式在实际应用中非常有用,比如在用户管理、权限分配等场景下,都需要用到这样的逻辑来判断用户的操作。 ### 总结 通过上述介绍,我们了解了如何在HTML中设置`checkbox`以及如何在Java中处理这些`...

    2020 JSP课后习题1

    Tomcat 使用 JDK 中的 Java 运行时环境(JRE)来解析和执行 JSP 页面以及相关的 Servlet。 2. 启动和关闭 Tomcat: - Tomcat 服务器可以通过执行 `bin` 目录下的 `startup.bat` 文件来启动,而关闭 Tomcat 可以...

    用Filter来解决中文表单提交问题

    在Web开发中,尤其是涉及到中文字符的处理时,经常会出现中文表单提交问题。这是因为不同的系统和浏览器在处理字符编码时可能存在不一致,导致在表单提交时中文字符出现乱码。为了解决这个问题,我们可以利用Java的...

    j2ee中表单传值的所有方法

    表单数据的传递主要涉及到Servlet中的几个关键方法,包括`getParameter()`、`getParameterValues()`、`getParameterMap()`和`getParameterNames()`。这些方法帮助开发者从HTTP请求中获取并处理表单提交的数据。 1. ...

    servlet课件(工作原理,处理表单)

    处理表单数据时,Servlet可以通过`request.getParameter()`方法获取POST或GET请求中的参数。例如: ```java String yonghu = request.getParameter("yonghu"); String mima = request.getParameter("mima"); // ......

    jsp 将从表单中获得的数组的值-含中文 进行转码后在JSP中正确显示

    ### JSP中处理中文字符及数组的转码与显示 #### 概述 在Web开发过程中,特别是使用Java Server Pages (JSP)进行页面展示时,经常会遇到从表单提交的数据中含有中文的情况。若不进行适当的编码转换处理,可能会导致...

    jsp课后答案

    - 当表单中存在多个相同名称的输入元素时,例如多个复选框,使用`request.getParameterValues("item")`可以获得一个字符串数组,包含了所有选中的值。 - 而`request.getParameter("item")`只能获取第一个匹配项的...

    Servlet(十)&request(十一).zip

    11. **请求参数处理**:除了常规的GET和POST参数,还可以通过`getParameterMap()`获取所有参数,`getParameterValues()`处理多值参数,`getParts()`处理Multipart请求(如文件上传)。 这些知识点涵盖了Servlet基础...

    Servlet课后自测题

    在Servlet中,通过`request.getParameter()`获取单个参数值,通过`request.getParameterValues()`获取多个同名参数的值。 处理页面中文乱码问题,需要设置响应头的字符编码,即调用`response.setContentType()`或`...

    jsp期末试题(卷)答案解析.doc

    13. 表单处理:在JSP中获取一组复选框的值,最适合的方法是使用数组类型的请求参数,如`String[] city = request.getParameterValues("city")`。 这些知识点涵盖了JSP的基础概念、Web应用结构、HTTP协议、Tomcat...

    Servlet表单Get和Post方式读取

    在这个"Servlet表单Get和Post方式读取"的主题中,我们将深入探讨如何使用Servlet来接收和处理来自HTML表单的GET和POST请求。 首先,让我们了解GET和POST这两种HTTP方法的基本概念: 1. GET方法:这是HTTP请求中最...

    JAVA Web程序设计-3期(KC006) 13单元案例_Servlet典型应用教学案例.doc

    虽然在给出的代码中没有显示,但在实际编程中,通常需要添加异常处理,例如处理可能出现的输入异常、网络异常或SQL异常等。 10. **环境配置**: 案例中提到的`webapps`文件夹是Tomcat服务器的标准部署目录,`chap...

    Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

    如果表单中有多个相同名称的参数,我们可以使用request.getParameterValues()方法来获取所有参数值。这种方法适用于处理复选框和多选框等情况。 方式三:使用 BeanUtils.populate() 方法 我们可以使用Apache的...

Global site tag (gtag.js) - Google Analytics