稀奇古怪的问题!关于request
我在一个类中声明一个HttpServletRequest request属性;
该类中包含setRequest(HttpServletRequest req){
this.request=req;
}
有个输出的方法 在里面用request.getParameter( "属性名 ")获得到的值是NULL
但是在setRequest中使用req.getParameter( "属性名 ")就能获得到值;
PS:2个属性名完全一样
为什么会这样?
期待解答
我把代码帖出来 大家看看
这个是那个调用定时器任务的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){
System.out.println(req.getParameter( "url "));
//用req就能获得里面的值
request=req;
//在这里request输出的就是NULL
System.out.println(request.getParameter( "url "));
}
public void run() {
try {
//在这里用requset输出也是NULL
System.out.println(request.getParameter( "url "));
//request.getRequestDispatcher(forwardUrl).forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
[解决办法]
帮你顶了````
[解决办法]
public void setRequest(HttpServletRequest req){
System.out.println(req.getParameter( "url "));
//用req就能获得里面的值
request=req;
//在这里request输出的与用req输出的值一样
System.out.println(request.getParameter( "url "));
System.out.println(request==req);//返回true
}
=======================================================================
跟你说的返回结果不一样。
[解决办法]
关注