请老师检查。另外请求转发与响应重定向各自的参数是怎么写的啊?

请老师检查。另外请求转发与响应重定向各自的参数是怎么写的啊?

<%@ 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");
}

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、是一样的,可以是servlet,也可以是jsp。

以Servlet为例,新建TestServlet,如下:

http://img1.sycdn.imooc.com//climg/5fa8bf61098e44ac09180285.jpg

修改代码,转发到TestServlet,如下:

http://img1.sycdn.imooc.com//climg/5fa8bf6a0910d91506990360.jpg

请求query?word=apple,运行效果如下:

http://img1.sycdn.imooc.com//climg/5fa8bf8c0993b01503470094.jpg

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");

  • 提问者 谁叫我这么坏 #1
    老师,那重定向参数也和转发的参数格式一样吗?可以是servlet,也可以是一个jsp页面? 另外路径前加“/”与不加“/”好像是一样的效果,怎么回事啊?
    2020-11-09 11:17:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师