为什么我在使用" sendReditect"时会得到空值。在servlet中如下

时间:2018-05-28 18:58:43

标签: java servlets

为什么我在使用" sendReditect"时会得到空值?在servlet中如下

我的代码如下:即使在FirstServlet和SecondServlet中,我的fname值为null

index.html:

    <!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="FirstServlet" method="get">
        username<input type="text" name="fname"></br> <input type="submit"
            value="SUBMIT">
    </form>
</body>
</html>

FirstServlet:

    package com.naveen;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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 FirstServlet
 */
@WebServlet("/FirstServlet")
public class FirstServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {
        String s3=request.getParameter("fname");
        // TODO Auto-generated method stub
        /*String s1=request.getParameter("t1");*/
        /*RequestDispatcher rd=request.getRequestDispatcher("SecondServlet");
        rd.forward(request, response);*/
        res.sendRedirect("SecondServlet");
        System.out.println("your output as per" +s3);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

SecondServlet:

package com.naveen;

import java.io.IOException;
import java.io.PrintWriter;

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 SecondServlet
 */
@WebServlet("/SecondServlet")
public class SecondServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
        String s3=request.getParameter("fname");

        out.print("hi i am siddharth");
        out.println(s3);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

1 个答案:

答案 0 :(得分:1)

  

为什么我在servlet中使用“sendReditect”时获得null值   每个低于我的代码,如下所示:我即使在fname值为null   FirstServlet和SecondServlet,

因为您没有为您的请求设置任何值。您需要将值设置为请求,如下所示:

@WebServlet("/FirstServlet")
public class FirstServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse res) throws ServletException, IOException {
        String s3=request.getParameter("fname"); //get the value you set in your jsp/html/url


        request.setAttribute("fname", s3); // set the s3 value to the request

        res.sendRedirect("SecondServlet");
        System.out.println("your output as per" +s3);
    }


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

    }

}

我假设您已经通过表单或其他内容发送了fname值。如果您只需在网址中输入FirstServlet即可,则会获得空。

但是如果你设置了某些内容,如果你没有提交表格,请尝试这样做:

/FirstServlet?fname=helloworld

修改

刚刚在你的表单中注意到你实际上没有为任何值设置fname。你需要给它一个值:

    <!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="FirstServlet" method="get">
        username<input type="text" name="fname" value="helloworld"></br> //add value to your input!! 
                <input type="submit" value="SUBMIT">
    </form>
</body>
</html>