jsp提交响应后无法调用sendRedirect()
时间: 2023-09-17 19:11:04 浏览: 275
如果在JSP中提交表单后,无法调用`sendRedirect()`方法进行重定向,可能是因为以下原因:
1. 在JSP中已经输出了响应体,导致无法再次进行重定向;
2. 在提交表单时,使用了异步请求(Ajax),而不是普通的表单提交,导致无法直接使用`sendRedirect()`方法进行重定向。
针对第一个问题,可以在JSP中使用`<jsp:forward>`标签进行转发,而不是使用`sendRedirect()`方法进行重定向。例如:
```
<jsp:forward page="redirect.jsp" />
```
针对第二个问题,可以在异步请求中使用JavaScript进行重定向,例如:
```
$.ajax({
type: "POST",
url: "submit.jsp",
data: formData,
success: function (data) {
window.location.href = "redirect.jsp";
},
error: function (xhr, status, error) {
// 处理错误情况
}
});
```
其中,`window.location.href`用于将页面重定向到指定的URL。
相关问题
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 页面。
response.sendRedirect
`response.sendRedirect()`是Java Servlet中的一个方法,它的作用是将客户端浏览器重定向到另一个URL指定的页面。
在上面的代码示例中,当表单数据处理完毕后,我们通过调用`response.sendRedirect()`方法将用户重定向到登录页面。具体来说,这个方法的参数是一个字符串,表示重定向的目标URL。在本例中,我们将目标URL设置为"login.jsp",因此用户在注册成功后会被自动重定向到登录页面。
需要注意的是,当调用`response.sendRedirect()`方法时,服务器会向客户端浏览器发送一个HTTP响应,其中包含了一个特殊的响应头Location,该响应头指定了重定向的目标URL。浏览器收到这个响应后会自动向目标URL发起新的HTTP请求,从而实现重定向。
阅读全文