页面显示null

页面显示null

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="servlet-advanced/AppleServlet">
        <input type="text"  placeholder="请输入要查询的单词">
        <input type="submit" value="查询">
    </form>
</body>
</html>

package com.imooc.servlet.apple;

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 AppleServlet
 */
@WebServlet("/AS")
public class AppleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AppleServlet() {
        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> apple=new HashMap<String,String>();
        apple.put("Apple", "苹果");
        apple.put("grape", "葡萄");
        apple.put("orange", "橘子");
        String ap=request.getParameter("ap");
        //response.setContentType("text/html;charset=uft-8");
        Boolean flag=false;
        String result=null;
        if(apple.containsKey(ap)) {
            flag=true;
            result=apple.get(ap);
        }
        else {
            result="没有找到对应的单词!";
        }
        if(flag) {
            request.setAttribute("result",result);
            request.getRequestDispatcher("/success.jsp");
        }
        else {
            HttpSession hs=request.getSession();
            hs.setAttribute("result", result);
            response.sendRedirect("fail.jsp");
        }
    }

}

<%@ 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>
    <p style="color:blue;font-size:30px;font-weight:bold;">
    <%=request.getAttribute("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>Insert title here</title>
</head>
<body>
    <p style="cplor:red;font-size:30px;font-weight:bole;">
    <%=request.getAttribute("result") %>
    </p>
</body>
</html>


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

第一次浏览地址:http://localhost:8080/servlet-advanced/Apple.html

第二次浏览地址:localhost:8080/servlet-advanced/AS

跳转:http://localhost:8080/servlet-advanced/fail.jsp,显示为null,请老师帮看下哪边问题。

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

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

5回答
好帮手慕阿满 2019-08-08 14:30:02

同学你好,建议同学在servlet中输出一下获取的值,如:

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

如果是乱码,建议同学在前边加上字符集编码的方式再试试。

祝:学习愉快~

好帮手慕阿满 2019-08-08 10:36:40

同学你好,在html页面中input标签中,需要添加name属性,如:

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

在servlet中,获取的ap的值,对应的就是input中name为ap的值,如:

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

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

  • 提问者 慕容6190480 #1
    html页面中input标签中添加了属性,AppleServlet中也获取了该属性,可以看我最后一次传的代码。
    2019-08-08 10:42:45
提问者 慕容6190480 2019-08-08 08:06:27

package com.imooc.servlet.apple;

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 AppleServlet
 */
@WebServlet("/AS")
public class AppleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AppleServlet() {
        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> apple=new HashMap<String,String>();
        apple.put("Apple", "苹果");
        apple.put("grape", "葡萄");
        apple.put("orange", "橘子");
        String ap=request.getParameter("ap");
//        response.setContentType("text/html;charset=uft-8");
        Boolean flag=false;
        String result=null;
        if(apple.containsKey(ap)) {
            flag=true;
            result=apple.get(ap);
//            response.getWriter().println(result);
        }
        else {
            result="没有找到对应的单词!";
        }
        if(flag) {
            request.setAttribute("result",result);
            request.getRequestDispatcher("/success.jsp").forward(request,response);
        }
        else {
            HttpSession hs=request.getSession();
            hs.setAttribute("result", result);
            response.sendRedirect("/fail.jsp");
        }
    }

}


http://localhost:8080/servlet-advanced/Apple.html


结果显示:


没有找到对应的单词!http://img1.sycdn.imooc.com//climg/5d4b671b0001f41803540065.jpg


还是没有获取到对应的值,哪边有问题?

提问者 慕容6190480 2019-08-07 15:56:00


http://img1.sycdn.imooc.com//climg/5d4a83d60001998b01740114.jpg跳转成功了,没有获取到对应的值。

  • 同学按照老师给同学的提的建议,在老师这里是可以正常显示的,同学是怎么操作的呢。
    2019-08-07 18:07:56
好帮手慕柯南 2019-08-07 14:55:30

同学你好!

  1. 页面显示为null的原因,跳转至查询失败页面时,将返回的信息存放在了seesion中,在页面中使用从request中获取,因此是获取不到的,可参考以下代码:

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

  2. 同学的代码还有一些小问题:

    1)在页面点击查询无法直接跳转至servlet中,因为同学的地址有误,在后台无法获取到传递的参数,因为没有给input添加name属性,修改后的代码:

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

    2)输入的单词正确时无法跳转至成功页面,原因是因为同学的转发书写有误,修改后:

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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