java.lang.NullPointerException 高手帮忙看看是什么问题..在线等.

wenohuang 2007-06-30 01:10:48
代码:
public class transferOptionServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
...
}

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

...

context.getRequestDispatcher("TransferServlet").forward(request,response);//报错
}
}

报错信息:(日志文件里面得报错信息)

<[ServletContext(id=26801639,name=/Winds,context-path=/Winds)] Servlet failed with Exception
java.lang.NullPointerException
at transferOptionServlet.doGet(transferOptionServlet.java:122)
at transferOptionServlet.doPost(transferOptionServlet.java:63)


那位高手能解答一下.非常感谢了!!!在线等
...全文
1114 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
whut_lcy 2007-07-02
  • 打赏
  • 举报
回复
楼上的也可以。不过在配置<param></param>里面给init-value时候,LZ注意要加"/"在资源前面 否则还是会出现NullPointerException的,而且注意相对路径的用法,不小心又会报Resource not found之类的错误
wu_liao 2007-07-02
  • 打赏
  • 举报
回复
代码:
public class transferOptionServlet extends HttpServlet
{
private String toPage="index.jsp";
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
toPage = config.getInitParameter("toPage");

}
然后配再配置个init-value参数就可以了

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

...

request.getRequestDispatcher(toPage).forward(request,response);//报错
}
}
whut_lcy 2007-07-02
  • 打赏
  • 举报
回复
再多说一句,看看<servlet-name>TransferServlet</servlet-name>,其实servlet的名字根本没有任何用处,仅仅在web.xml里有用,倒是它的url映射有实际用处。在jsp里也好,其他web组件里也好,如果要访问servlet,不是靠它的名字 而是url映射。想想struts的ActionSevlet就知道了。它的配置几乎都是<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
大家都是用login.do之类的url格式访问ActionSerlvet,却为什么不写action?就这个原因。

假如LZ把<url-pattern>/servlet/transferServlet</url-pattern>
改成<url-pattern>/transferServlet</url-pattern>
其他不用改,你的代码也就是对的了。
whut_lcy 2007-07-02
  • 打赏
  • 举报
回复
你要把请求转发道servlet,看看你的url映射:
<servlet-mapping>
<servlet-name>TransferServlet</servlet-name>
<url-pattern>/servlet/transferServlet</url-pattern>
</servlet-mapping>

之所以报NullPointerException,那说明你这个dispatch转发器指向的引用是空的,为什么:
context.getRequestDispatcher("TransferServlet").forward(request,response);//报错
context.getRequestDispatcher("path")的参数格式不对。应该是"/"开头。

你要把请求转发给 <servlet-name>TransferServlet</servlet-name>
你只见诶写 context.getRequestDispatcher("/TransferServlet").当然也不对,因为它的url映射不是这样。所以报找不到相关资源

正确的写法:
context.getRequestDispatcher("/servlet/transferServlet");
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
doPost(...)
{
doGet(...);
}

都加了
aya01 2007-06-30
  • 打赏
  • 举报
回复
你加了DOPOST()方法了吗 DOGET和DOPOST2个要一起出现的 不然你换成Service
dunzivip 2007-06-30
  • 打赏
  • 举报
回复
TransferServlet里面的错误
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
IOException 已经捕获代码也写了
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
如果改成"/TransferServlet" 错误入下:


Error 404--Not Found
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.4.5 404 Not Found
The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent.

If the server does not wish to make this information available to the client, the status code 403 (Forbidden) can be used instead. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address.

eplang 2007-06-30
  • 打赏
  • 举报
回复
如果想用请求转发,是否该这样使用?
request.getRequestDispatcher("servlet1").forward(request,response);
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
路径 /Winds/Transfer/transferServlet.class 这是错误得.

大家帮帮忙啊
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
c:\bea\user_projects\domains\myDomain\applications\Winds\Winds.war\WEB-INF\classes

这是servlet路径,
其中transferOptionServlet.class 和 transferServlet.class都是在该路径下.
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
路径 /Winds/Transfer/transferServlet.class
xueqier 2007-06-30
  • 打赏
  • 举报
回复
这个是取不到TransferServlet的值,也就是说TransferServlet传进去的时候是空的
gongyali2005 2007-06-30
  • 打赏
  • 举报
回复
IOException捕获否?包导入否?路径对否?
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
web.xml里面得内容

<servlet>
<servlet-name>TransferServlet</servlet-name>
<servlet-class>transferServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>TransferServlet</servlet-name>
<url-pattern>/servlet/transferServlet</url-pattern>
</servlet-mapping>
wenohuang 2007-06-30
  • 打赏
  • 举报
回复
web.xml已经加入了TransferServlet映射信息

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧