6-3请老师看看有没有改进的地方
主界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="http://localhost:8080/servlet_advanced_self/Servlet/test">
<input type="text" name="name" placeholder="请输入要查询的单词">
<button>查询</button>
</form>
</body>
</html>
servlet:
package com.imooc.test2;
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;
/**
* Servlet implementation class ServletTest
*/
@WebServlet("/Servlet/test")
public class ServletTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map map=new HashMap();
map.put("apple", "苹果");
map.put("banana", "香蕉");
map.put("orange","橙子");
String index=request.getParameter("name");
boolean flag=map.containsValue(index);
if(flag)
{
request.setAttribute("name",index);
request.getRequestDispatcher("/success.jsp").forward(request, response);
}
else
{
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
}
}
成功界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String names=(String)request.getAttribute("name");
out.println("<h1 style='color:blue'>"+names+"<h1>");
%>
</body>
</html>
失败界面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String nof="没找到这个单词";
out.println("<h1 style='color:red'>"+nof+"</h1>");
%>
</body>
</html>
正在回答 回答被采纳积分+1
同学,根据题目要求,你的代码存在一些问题。1.由于英文单词是Map集合的key值,所以检查Map集合是否存在输入的单词(你定义为index)应该使用containsKey()方法;2.当Map集合存在输入的单词时,题目要求将查询到的结果(单词对应的中文,是Map集合的value值)存储到request中,然后再转发显示。所以需要遍历Map集合以获取对应的value值,再将value值转发出去。而你的代码直接将输入的单词转发出去了。3.当Map集合不存在输入的单词时,题目要求将结果(“没有找到对应的单词解释!”)存储到session中,然后重定向进行显示。而你的代码将结果写在了jsp页面,并且使用的是请求转发进行显示。以下是修改意见:
//针对问题1 //修改代码 boolean flag=map.containsKey(index);//原代码:boolean flag=map.containsValue(index); //针对问题2 //添加代码,位置:if(flag)之前 String result = null; //添加代码,位置:if(flag){ 之后 for(Map.Entry<String,String> s : map.entrySet()){ if(index.equals(s.getKey())){ result = s.getValue(); break; } } //修改代码 request.setAttribute("name",result);//原代码:request.setAttribute("name",index); //针对问题3 //添加代码,位置:else{ 之后 HttpSession session = request.getSession(); session.setAttribute("name", "没有找到对应的单词解释!"); //修改代码 response.sendRedirect("/你项目的工程名/error.jsp"); //原代码:request.getRequestDispatcher("/error.jsp").forward(request, response); //修改代码,失败界面的body部分 <% String value = (String) request.getSession().getAttribute("name"); out.println(value); %>
你好同学,效果完成的不错,加油,祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星