我在一个类中声明一个HttpServletRequest request属性;
该类中包含setRequest(HttpServletRequest req){
   this.request=req;
}
有个输出的方法 在里面用request.getParameter("属性名")获得到的值是NULL
但是在setRequest中使用req.getParameter("属性名")就能获得到值;
PS:2个属性名完全一样为什么会这样?
期待解答

解决方案 »

  1.   

    setRequest方法有没有在输出的方法之前被执行?如果没有那当然取不到了。
      

  2.   

    setRequest方法在调用了  但是还是取不到
    只是在该方法里用req能获得到 在用request就不行了  到底怎么办 疯了 疯了
      

  3.   

    我把代码帖出来 大家看看
    这个是那个调用定时器任务的servlet
    package myServlet;import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Timer;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import myClass.myTimerTask;public class ActionServlet extends HttpServlet { /**
     * Constructor of the object.
     */
    public ActionServlet() {
    super();
    } /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    } /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String url=request.getParameter("url");
    String fid=request.getParameter("fid");
    String tid=request.getParameter("tid");
    int interval=Integer.parseInt(request.getParameter("interval"));
    String content=request.getParameter("content");
    String type=new String(request.getParameter("type").getBytes("ISO-8859-1"),"gbk");
    String forwardUrl=url+"?step=2&action=reply&editor=0&atc_attachment=none&fid="+fid+"&tid="+tid+"&atc_content="+content+"";
    Timer myTimer=new Timer(true);
    if(type.equals("开始")){
    myTimerTask test=new myTimerTask();
    test.setRequest(request);
    myTimer.schedule(test, 0, interval*1000);
    }else{
    myTimer.cancel(); 
    }
    } /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { doGet(request,response);
    } /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException {
    // Put your code here
    }}
    这个是那个继承TimerTask的类package myClass;import java.io.IOException;
    import java.util.TimerTask;import javax.servlet.ServletException;
    import javax.servlet.http.*;public class myTimerTask extends TimerTask {
    HttpServletRequest request;
    HttpServletResponse response;
    String forwardUrl="";
    /*public myTimerTask(HttpServletRequest req,HttpServletResponse res,String str){
    request=req;
    response=res;
    forwardUrl=str;
    使用构造方法也不可以
    }*/
    public void setRequest(HttpServletRequest req){
    req.getParameter("url");
    // 用req就能获得里面的值
    request=req;
    }
    public void run() {
    try {
    // 在这里用requset就输出NULL
     System.out.println(request.getParameter("url"));
    //request.getRequestDispatcher(forwardUrl).forward(request, response);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}