jsp将表单参数不在request中
时间: 2023-10-02 13:06:09 浏览: 48
如果你想将表单参数不存储在request对象中,可以使用 session 对象或者 cookie 对象来存储表单参数。
使用 session 对象可以将表单参数存储在服务器端,以便在后续的请求中访问。具体实现方法是,在表单的处理程序中,使用 request.getSession() 方法获取 session 对象,然后使用 session.setAttribute() 方法将表单参数存储在 session 对象中。例如:
```
HttpSession session = request.getSession();
session.setAttribute("username", request.getParameter("username"));
```
使用 cookie 对象可以将表单参数存储在客户端,以便在后续的请求中访问。具体实现方法是,在表单的处理程序中,使用 HttpServletResponse 对象的 addCookie() 方法将表单参数存储在 cookie 对象中。例如:
```
Cookie cookie = new Cookie("username", request.getParameter("username"));
response.addCookie(cookie);
```
需要注意的是,使用 cookie 对象存储表单参数时需要考虑安全性问题,避免敏感信息被恶意获取。
相关问题
jsp中接受参数乱码中文
在JSP中接收参数乱码的问题,通常是由于编码不一致导致的。下面是一些可能的解决方案:
1. 在JSP页面中设置编码为UTF-8,可以在头部添加以下代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
```
2. 在表单中添加编码设置,可以在form标签中添加以下代码:
```
<form action="xxx.jsp" method="post" accept-charset="UTF-8">
```
3. 在后台Servlet中使用UTF-8编码解析参数,可以在Servlet中添加以下代码:
```
request.setCharacterEncoding("UTF-8");
```
如果以上方法都无法解决问题,可以尝试使用一些第三方库,例如commons-fileupload和commons-io,来处理编码问题。
jsp中表单提交后request.getParameter获取不到值表单的enctype="multipart/form-data"
当表单的 enctype 属性设置为 "multipart/form-data" 时,表单数据会以二进制流的形式传输,而不是以普通的键值对的形式传输。因此,使用 request.getParameter() 方法获取表单参数时会获取不到值。
要获取 "multipart/form-data" 表单的参数,可以使用 Apache Commons FileUpload 组件。这个组件可以将表单数据解析成文件和字段两个部分,从而可以获取表单的参数值。
具体实现步骤如下:
1. 在 JSP 页面中引入 Apache Commons FileUpload 组件的相关库文件。可以从官网下载这些文件,然后将其放置到 WEB-INF/lib 目录下。
2. 在表单的处理程序中,使用 Apache Commons FileUpload 组件解析表单数据。具体实现代码如下:
```
// 创建 DiskFileItemFactory 对象
DiskFileItemFactory factory = new DiskFileItemFactory();
// 创建 ServletFileUpload 对象
ServletFileUpload upload = new ServletFileUpload(factory);
// 解析表单数据
List<FileItem> items = upload.parseRequest(request);
// 遍历表单数据
for (FileItem item : items) {
if (item.isFormField()) {
// 处理普通字段
String name = item.getFieldName();
String value = item.getString("UTF-8");
// TODO: 处理表单参数
} else {
// 处理文件字段
String name = item.getFieldName();
String fileName = item.getName();
InputStream inputStream = item.getInputStream();
// TODO: 处理文件上传
}
}
```
在上述代码中,使用 DiskFileItemFactory 对象和 ServletFileUpload 对象来解析表单数据。解析结果会以 List<FileItem> 的形式返回,然后遍历这个列表,分别处理普通字段和文件字段。
对于普通字段,可以使用 FileItem 对象的 getFieldName() 方法获取字段名,使用 getString() 方法获取字段值。
对于文件字段,可以使用 FileItem 对象的 getName() 方法获取文件名,使用 getInputStream() 方法获取文件数据流。
需要注意的是,在解析表单数据之前,需要设置 request 的字符编码为 UTF-8,以便正确处理中文字符。可以通过在 JSP 页面中设置以下代码来实现:
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
```