老师看一下我的代码 怎么提交后是个下载页面

老师看一下我的代码 怎么提交后是个下载页面

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action="/Text/check">

<input type="text" name="key" placeholder="请输入要查询的单词">

<button type="submit">查询</button>

</form>

</body>

</html>

====================================================================

  <servlet>

  <servlet-name>name</servlet-name>

  <servlet-class>com.imooc.text.CheckServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>name</servlet-name>

  <url-pattern>/check</url-pattern>

  </servlet-mapping>

================================================================

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Map<String,String> map=new HashMap<String,String>();

map.put("apple", "苹果");

map.put("banana", "香蕉");

map.put("orange", "橙子");

String danci=request.getParameter("key");

boolean flag= map.containsKey(danci);

if(flag) {

request.setAttribute("key", map.get(danci));

request.getRequestDispatcher("/Success.jsp").forward(request, response);

}else {

HttpSession session=request.getSession();

String nof="没有找到对应的单词解释";

session.setAttribute("error", nof);

response.sendRedirect("/Text/fail.jsp");

}

============================================================

<%   

     String keys=(String)request.getAttribute("key");

     response.setContentType("html/text;charset=utf-8");

     response.getWriter().println(keys);

%>

====================================================

<%

   String str=(String)session.getAttribute("error");

   out.println("<h1>"+str+"</h1>");

%>

分别为html文件、Servlet代码、两个jsp文件

正在回答 回答被采纳积分+1

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

2回答
好帮手慕阿莹 2019-01-31 10:44:54

是因为同学在jsp页面添加了:

response.setContentType("html/text;charset=utf-8");  

去掉就可以了。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 Math_J #1
    请问老师 是因为jsp页面本来就已经定义了页面和字符类型 所以再重新定义就会出现的问题吗?还是因为其他原因呢
    2019-01-31 13:23:56
  • 慕布斯37364 回复 提问者 Math_J #2
    不应该在jsp中使用 response.setContentType("html/text;charset=utf-8"); ,一般会在Servlet中使用。在Servlet中,设置response.setContentType("html/text;charset=utf-8"); 的意思是,相应到浏览器的内容以html的格式解析。所以,如果直接在浏览器中使用,就变成文件的下载了。 所以,在jsp中是不用这句话的。
    2019-01-31 14:34:18
提问者 Math_J 2019-01-30 21:24:41

输入错误的key值 可以显示出来;输入正确的值会下载一个文件  打开也能看到对应的value值 如下图所示:http://img1.sycdn.imooc.com//climg/5c51a594000109bf07450546.jpg

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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