仅仅作为日常笔记用~~
tomcat的HttpServletRequest实现类为 RequestFacade
package org.apache.catalina.connector;
public class RequestFacade implements HttpServletRequest
RequestFacade 中使用了
org.apache.catalina.connector.Request类来处理数据比如:
getParameter();获取属性
setCharacterEncoding(String env) 设置编码格式
例如:
当用户在过滤器中设置了 res.setCharacterEncoding ("GBK");
tomcat执行的时候会 调用RequestFacade.setCharacterEncoding (String env);
RequestFacade.setCharacterEncoding (String env);方法内部会调用
Request.setCharacterEncoding(String env)把编码传递给Request
Request.setCharacterEncoding(String env);方法内部会调用
org.apache.coyote.Request类的setCharacterEncoding(String env);
把编码保存在 org.apache.coyote.Request 的charEncoding属性中
那程序时如何使用这个编码的呢?
当用户在过滤器或者servlet中调用getParameter(String name)来获取属性的时候
方法调用如下流程---->RequestFacade.getParameter(String name)--->
org.apache.catalina.connector.Request的getParameter(String name)--->此处会先调用parseParameters把编码传递给coyoteRequesorg.apache.coyote.Request.coyoteRequest的getParameters().getParameter(name); 先获取org.apache.tomcat.util.http.Parameters然后调用getParameter----->转码------>getParameterValues(name)---->最后从HashTable中取值
分享到:
相关推荐
首先,`HttpServletRequest`对象的`setCharacterEncoding`方法是用来设置请求体的字符编码,也就是用于处理POST请求中的数据编码。当你在过滤器中调用`request.setCharacterEncoding("UTF-8")`时,它会确保POST请求...
当调用`request.setEncoding("utf-8")`时,实际上是调用了`Request`类的`setCharacterEncoding`方法。这个方法首先检查一个布尔变量`usingReader`。如果`usingReader`为`true`,则意味着已经调用了`getReader()`...
如果通过表单提交的数据出现乱码,可以在Servlet中设置请求的字符编码,如`request.setCharacterEncoding("gb2312")`。为了全局解决这个问题,可以使用过滤器(Filter)。 过滤器是Java Web应用中处理请求和响应的...
创建一个自定义过滤器,实现`Filter`接口,并在`doFilter`方法中调用`setCharacterEncoding`。过滤器可以捕获所有的HTTP请求,确保无论请求来自哪里,都能正确处理编码。 5. **服务器配置**:尽管不推荐,但也可以...
通常,需要在`<%@ page...%>`指令中设置`pageEncoding`属性,并在处理请求时使用`request.setCharacterEncoding()`方法。 **与数据库通信**: JSP可以通过JDBC(Java Database Connectivity)与数据库进行交互,...
req.setCharacterEncoding("UTF-8"); chain.doFilter(req, res); } } ``` 在`web.xml`中配置过滤器: ```xml <filter-name>setCharacterEncoding <filter-class>...
Tomcat服务器在处理GET请求时,会按照ISO-8859-1编码处理,POST请求则默认也是ISO-8859-1,但可以通过`request.setCharacterEncoding("GBK")`来改变编码方式。 解决JSP中文乱码问题主要有两种方法: 1. 方法一:...
对于POST请求,我们使用`getParameter()`方法同样可以获取参数,但需要先调用`request.setCharacterEncoding("UTF-8")`设置字符编码,防止中文乱码问题。 在处理完登录验证后,Servlet会生成一个JSON字符串作为响应...
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); chain.doFilter(request, response); } ``` 这段代码首先通过`setCharacterEncoding`方法将请求的字符编码设置为...
在JSP页面中,可以通过`request.setCharacterEncoding("GBK")`来设置请求编码,确保数据在被处理前能正确转换为指定编码(如GBK)。同时,使用`response.setCharacterEncoding("GBK")`设定响应编码,保证返回给...
- 由于GET方式的参数直接包含在URL中,无法通过`request.setCharacterEncoding()`来改变其编码方式。一种常见的解决方案是手动解析URL中的参数,并使用合适的编码重新构建参数字符串。 3. **服务器输出响应**: -...
- 对于请求乱码,可以在`doFilter`方法中获取请求参数,然后通过`setCharacterEncoding`设置请求的编码格式,如`request.setCharacterEncoding("UTF-8")`。 - 对于响应乱码,可以通过`response.setContentType(...
例如,使用`HttpServletRequest`的`setCharacterEncoding()`方法设置请求编码,`HttpServletResponse`的`setContentType()`方法设置响应的Content-Type和charset。 4. **示例代码**: ```java public void ...
为了避免这种情况,开发者需要在接收请求数据时明确指定编码,如使用request.setCharacterEncoding("UTF-8")。 此外,为了实现页面显示的正确性,HTML和JSP页面的`<meta>`标签也需要指定正确的字符集,例如`...
- 当POST请求中包含GBK字符集的汉字时,需在Servlet中通过`request.setCharacterEncoding("GBK")`设置请求编码。 - Servlet API主要包含`javax.servlet`和`javax.servlet.http`两个包。 - Servlet生命周期不包括`...
确保在`<form>`标签中设置`accept-charset="UTF-8"`,并在Servlet中设置请求和响应的编码,如`request.setCharacterEncoding("UTF-8");`和`response.setContentType("text/html;charset=UTF-8");`。 3. **用户登录*...
5. 编码控制:`setCharacterEncoding()`设定字符编码,确保正确处理请求和响应中的文本数据。 源码分析: 理解`HttpServletRequest`和`HttpServletResponse`的源码有助于深入学习Servlet的工作原理。在Servlet容器...
9. **注意事项**:确保页面输出的字符集与接收请求时的编码一致,如通过`request.setCharacterEncoding()`设置POST请求的编码。如果需要全局处理编码问题,可以使用Filter。 总结,JSP是Java Web开发中的重要组件,...
- POST请求中,需确保表单编码为UTF-8,可通过在表单内添加`<meta charset="utf-8">`或在服务器端使用`req.setCharacterEncoding("utf-8")`设置编码。 7. **Servlet输出中文**: 避免乱码,可以在输出响应前设置...
request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 接收客户端发送的用户名和密码 String username = request.getParameter("username"); username = new String(username....