JSP表单提交的信息中有汉字接收信息的页面应作怎样的处理
时间: 2024-05-22 18:14:39 浏览: 203
接收JSP表单提交的信息中有汉字的页面应该进行以下处理:
1. 设置页面的字符编码为UTF-8,以确保能够正确处理含有汉字的信息。
2. 在JSP页面中使用request.setCharacterEncoding("UTF-8")方法,以确保服务器端正确处理含有汉字的信息。
3. 对于含有汉字的文本信息,在服务器端接收时,需要使用Java编程语言中的String类的构造函数,将字节流转换为字符串。例如,可以使用如下代码:
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
其中,name为表单提交的含有汉字的文本信息的名称,"ISO-8859-1"为表单提交的文本信息的字符编码,"UTF-8"为服务器端处理汉字的字符编码。
4. 对于含有汉字的文件上传,需要使用Apache的FileUpload组件,以确保能够正确处理含有汉字的文件名。在使用FileUpload组件时,需要设置编码为UTF-8,例如:
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setDefaultCharset("UTF-8");
ServletFileUpload upload = new ServletFileUpload(factory);
这样就可以正确处理含有汉字的文件名了。
相关问题
用jsp实现。 写出如下问题代码 1) intput. jsp中包含一个表单,其中“体育爱好”为允许多项选择的 字段式选择栏控件,且“篮球”“乒乓球” 选项为默认选中; 2)单击input. jsp的“注册”按钮将表单提交给handle. jsp处理,接收各表单控件信息,在handle 页面中进行必要的中文乱码处理;同时判断如果用户没有输入呢称,. 跳转回input. jsp页面并提示用户信息“呢称不能为空,请重新输入!” 3)如果用户输入呢称合法,则接受并打印出所有注册信息,在该页面 中添加一一个超链接一-修 改昵称,点击超链接跳转到updateForm. jsp,并将现有昵称使用session存储,使得在其他页面也能够使用; 4)在updateForm. jsp页面中创建表单,接收并展示现有昵称; 5)单击updateFrom. jsp页面的“修改”按钮后,将表单提交给 output. jsp页面处理。在该页面中显示信息。
1) intput.jsp中包含一个表单,其中“体育爱好”为允许多项选择的字段式选择栏控件,且“篮球”“乒乓球”选项为默认选中:
```jsp
<!DOCTYPE html>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h1>用户注册</h1>
<form action="handle.jsp" method="post">
<label for="username">用户名:</label>
<input type="text" name="username" id="username"><br><br>
<label for="password">密码:</label>
<input type="password" name="password" id="password"><br><br>
<label for="email">邮箱:</label>
<input type="email" name="email" id="email"><br><br>
<label for="phone">手机号:</label>
<input type="text" name="phone" id="phone"><br><br>
<label for="hobby">体育爱好:</label>
<select name="hobby" id="hobby" multiple>
<option value="basketball" selected>篮球</option>
<option value="pingpong" selected>乒乓球</option>
<option value="football">足球</option>
<option value="tennis">网球</option>
</select><br><br>
<input type="submit" value="注册">
</form>
</body>
</html>
```
2)单击input.jsp的“注册”按钮将表单提交给handle.jsp处理,接收各表单控件信息,在handle页面中进行必要的中文乱码处理;同时判断如果用户没有输入呢称,跳转回input.jsp页面并提示用户信息“呢称不能为空,请重新输入!”
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>处理页面</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8"); //设置请求参数的编码格式为UTF-8
response.setContentType("text/html;charset=UTF-8"); //设置响应内容的编码格式为UTF-8
String username = request.getParameter("username"); //获取表单中的用户名
String password = request.getParameter("password"); //获取表单中的密码
String email = request.getParameter("email"); //获取表单中的邮箱
String phone = request.getParameter("phone"); //获取表单中的手机号
String[] hobby = request.getParameterValues("hobby"); //获取表单中的体育爱好
if(username == null || "".equals(username.trim())) { //判断用户名是否为空
out.print("<script>alert('呢称不能为空,请重新输入!');location.href='input.jsp';</script>"); //弹窗提示用户,跳转回input.jsp页面
return;
}
//打印出所有注册信息
out.print("<h1>用户注册信息</h1>");
out.print("<p>用户名:" + username + "</p>");
out.print("<p>密码:" + password + "</p>");
out.print("<p>邮箱:" + email + "</p>");
out.print("<p>手机号:" + phone + "</p>");
out.print("<p>体育爱好:");
if(hobby != null) {
for(String h : hobby) {
out.print(h + " ");
}
}
out.print("</p>");
//添加超链接-修改昵称,点击超链接跳转到updateForm.jsp
session.setAttribute("username", username); //使用session存储现有昵称,使得在其他页面也能够使用
out.print("<a href='updateForm.jsp'>修改昵称</a>");
%>
</body>
</html>
```
3)如果用户输入呢称合法,则接受并打印出所有注册信息,在该页面中添加一个超链接-修改昵称,点击超链接跳转到updateForm.jsp,并将现有昵称使用session存储,使得在其他页面也能够使用;
4)在updateForm.jsp页面中创建表单,接收并展示现有昵称;
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>修改昵称</title>
</head>
<body>
<h1>修改昵称</h1>
<form action="output.jsp" method="post">
<label for="username">现有昵称:</label>
<%
String username = (String)session.getAttribute("username"); //从session中获取现有昵称
out.print("<input type='text' name='username' id='username' value='" + username + "' readonly>"); //将现有昵称展示在表单中,并设置为只读
%><br><br>
<label for="newUsername">新昵称:</label>
<input type="text" name="newUsername" id="newUsername"><br><br>
<input type="submit" value="修改">
</form>
</body>
</html>
```
5)单击updateFrom.jsp页面的“修改”按钮后,将表单提交给output.jsp页面处理,在该页面中显示信息。
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>输出页面</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8"); //设置请求参数的编码格式为UTF-8
response.setContentType("text/html;charset=UTF-8"); //设置响应内容的编码格式为UTF-8
String newUsername = request.getParameter("newUsername"); //获取表单中的新昵称
//显示信息
out.print("<h1>修改昵称结果</h1>");
out.print("<p>现有昵称:" + session.getAttribute("username") + "</p>");
out.print("<p>新昵称:" + newUsername + "</p>");
session.setAttribute("username", newUsername); //将新昵称存储在session中,更新现有昵称
%>
</body>
</html>
```
6. 请编写一个简单的 JSP 页面,显示英文字母表。 7.请简单叙述 include 指令标记和 include 动作标记的不同. 8. 编写三个 JSP 页面:main.jsp、circle jsp、ladder.jsp, 将三个 JSP 页面保存在 同一web 服务目录中。main.jsp 使用 include 动作标记加載 circle.jsp 和ladder.jsp页面。circle.jsp 页面可以计算并显示圆的面积。ladder.jsp页面可以计算并显示梯形的面积。当 circle.jsp 和ladder.jsp 被加载时获取main.jsp 页面include 动作标记的param 子标记提供的圆的半径以及梯形的上底、下底和高的值。 1.假设JSP 使用的表单中有如下的 GUI(复选框 <input type="checkbox" name="item" value="bird"> , sinput type='checkbox" name="item" value="apple">苹果 sinput type="'checkbox" name="item" value="cat">猫 sinput type="checkbox" name="item" value="moon">月亮 该表单所请求的 JSP 可以使用内罝对象 request 获取该表单提交的数据.那么.下列 哪些是 request 获取该表单提交的值的正确语句? A. String a-request.getParameter("item"); B. String b=request.getParameter("checkbox"); C. String c(]=request.getParameter Values("item"); D. String d[]=request. getParameter Values("checkbox"); 2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处理?3.编写两个jsp 页面 inpuString.jsp 和 computer.jsp,用户可以使用 inputString.isp 提供的表单输入一个字符串,并提交给 computer.isp 页面,该页 面通过内置对象获取 inputString.jsp 页面提交的字符串,计算并显示该宇符串的长度。 4.response 调用 sendRedirect(URL: url方法的作用是什么? 5.一个用户在不同web 服务目录中的session 对象相同吗? 6.一个用户在同一Web服务目录的不同子目录的session 对象相同吗?
6. JSP 页面代码:
```jsp
<html>
<head>
<title>英文字母表</title>
</head>
<body>
<h1>英文字母表</h1>
<%
for(char c = 'A'; c <= 'Z'; c++){
%>
<%= c %>
<%
}
%>
</body>
</html>
```
7. include 指令标记和 include 动作标记的不同:
include 指令标记是在 JSP 页面的静态编译阶段就将被处理,即将被包含的文件的内容复制到原文件中,然后一起编译成一个页面。而 include 动作标记是在 JSP 页面的运行时动态执行,即在请求被发送到服务器后,才会去执行被包含的文件,并将其结果包含到原文件中。
8. main.jsp 代码:
```jsp
<html>
<head>
<title>主页</title>
</head>
<body>
<h1>主页</h1>
<jsp:include page="circle.jsp">
<jsp:param name="radius" value="6" />
</jsp:include>
<br/>
<jsp:include page="ladder.jsp">
<jsp:param name="upper" value="3" />
<jsp:param name="bottom" value="8" />
<jsp:param name="height" value="4" />
</jsp:include>
</body>
</html>
```
circle.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
double radius = Double.parseDouble(request.getParameter("radius"));
double area = Math.PI * radius * radius;
DecimalFormat df = new DecimalFormat("#.##");
%>
<p>半径为 <%= radius %> 的圆的面积为 <%= df.format(area) %></p>
```
ladder.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
double upper = Double.parseDouble(request.getParameter("upper"));
double bottom = Double.parseDouble(request.getParameter("bottom"));
double height = Double.parseDouble(request.getParameter("height"));
double area = (upper + bottom) * height / 2;
DecimalFormat df = new DecimalFormat("#.##");
%>
<p>上底为 <%= upper %>, 下底为 <%= bottom %>, 高为 <%= height %> 的梯形的面积为 <%= df.format(area) %></p>
```
1. 正确语句为 D,即 `String d[]=request.getParameterValues("checkbox");`。
2. 需要在 JSP 页面的头部设置编码方式:`<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>`,然后在接收信息的页面中,使用 `new String(request.getParameter("parameter").getBytes("ISO-8859-1"), "UTF-8")` 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码的字符串。
3. inputString.jsp 代码:
```jsp
<html>
<head>
<title>输入字符串</title>
</head>
<body>
<h1>输入字符串</h1>
<form method="post" action="computer.jsp">
请输入字符串:<input type="text" name="str"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
computer.jsp 代码:
```jsp
<%@ page import="java.text.DecimalFormat" %>
<%
String str = request.getParameter("str");
int length = str.length();
%>
<p>您输入的字符串是: <%= str %>,长度为: <%= length %></p>
```
4. sendRedirect 方法的作用是将请求重定向到另一个 URL,即将客户端的请求发送到另一个页面或网站。该方法会向客户端发送一个 HTTP 重定向响应,使其重新发送请求到指定的 URL。
5. 不同的 web 服务目录中 session 对象不同,即使是同一用户;但是同一 web 服务目录的不同子目录中 session 对象是相同的,即使是不同的 JSP 页面。
阅读全文