请老师检查。另外请求转发与响应重定向各自的参数是怎么写的啊?
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>单词查询</title>
</head>
<body>
<form action="/WebDemo1/query">
<input type="text" name="word" placeholder="请输入要查询的单词">
<input type="submit" value="查询">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询结果</title>
</head>
<body>
<%
String result = (String) request.getAttribute("result");
out.println("<p style='color:blue'>"+result+"</p>");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询结果</title>
</head>
<body>
<%
String result = (String) session.getAttribute("result");
out.println("<p style='color:red'>"+result+"</p>");
%>
</body>
</html>
package com.imooc.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class Query
*/
@WebServlet("/query")
public class Query extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Query() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Map<String, String> wordInfo = new HashMap();
wordInfo.put("apple", "苹果");
wordInfo.put("banana", "香蕉");
wordInfo.put("Green", "绿色");
wordInfo.put("big", "大");
String word = request.getParameter("word");
boolean exist = wordInfo.containsKey(word);
if (exist) {
request.setAttribute("result", wordInfo.get(word));
request.getRequestDispatcher("/success.jsp").forward(request, response);
} else {
HttpSession session = request.getSession();
session.setAttribute("result", "没有找到对应的单词解释!");
response.sendRedirect("/WebDemo1/fail.jsp");
}
}
}
23
收起
正在回答
2回答
同学你好,
1、是一样的,可以是servlet,也可以是jsp。
以Servlet为例,新建TestServlet,如下:
修改代码,转发到TestServlet,如下:
请求query?word=apple,运行效果如下:
2、转发中"/"表示"localhost:8080/WebDemo1(项目名称)/",但是在重定向中“/”,这个表示的是localhost:8080/。所以在同学代码中,转发时,加不加"/"都是一样的。重定向时,加不加"/"是不一样的。
好帮手慕阿慧
2020-11-09 11:03:35
同学你好,
1、测试代码,运行正确,课题完成的不错,很棒呐。
2、转发的语法格式是:request.getRequestDispatcher(String path).forward(request, response);
参数path是转发的目标地址,可以是servlet,也可以是一个jsp页面,可以使用相对路径,也可以使用绝对路径。
重定向的语法格式是:response.sendRedirect(String path);
参数path指的是目标的路径,可以使用相对路径也可以使用绝对路径。
例如,使用相对路径:response.sendRedirect("fail.jsp");
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星