求救:Servlet actionServlet is not available

JundyLin 2008-10-19 01:30:16
我用Eclipse工具开发struts时出现了这样的错误:
HTTP Status 404 - Servlet actionServlet is not available

--------------------------------------------------------------------------------

type Status report

message Servlet actionServlet is not available

description The requested resource (Servlet actionServlet is not available) is not available.
目录截图如下:

以下是代码:
web.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!--初始参数-->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--处理所有后缀为do的请求-->
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

struts-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<struts-config>
<!--定义formbean-->
<form-beans>
<form-bean name="helloWorld" type="com.demo.bean.HelloWorld"/>
</form-beans>
<action-mappings>
<!--定义提交时访问的路径-->
<action path="/submit" type="com.demo.action.HelloWorldAction" name="helloWorld">
<forward name="helloWorld" path="/jsp/helloWorld.jsp"/>
</action>
<!--定义初次访问的路径-->
<action path="/input" type="org.apache.struts.actions.ForwardAction" parameter="/jsp/submit.jsp>
</action>
</action-mappings>
</struts-config>

HelloWorld.java:
package com.demo.bean;
import org.apache.struts.action.ActionForm;
public class HelloWorld extends ActionForm{
private String helloWorld=null;
public void setHelloWorld(String helloWorld){
this.helloWorld=helloWorld;
}
public String getHelloWorld(){
return this.helloWorld;
}
}

HelloWorldAction.java
package com.demo.action;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import com.demo.bean.HelloWorld;
public class HelloWorldAction extends Action{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)
throws Exception{
//将页面提交的进行转换成form
HelloWorld helloWorld=(HelloWorld)form;
//将获取的页面内容注入request
request.setAttribute("helloWorld", helloWorld.getHelloWorld());
//返回到helloWorld.jsp页面
return mapping.findForward("helloWorld");
}
}

submit.jsp:
<%@page contentType="text/html;chatset=GBK"%>
<html>
<head><title>练习使用</title></head>
<body>
<form name="HelloWorld" action="/Demo2/submit.do" method="post">
请输入要提交的内容:<input type="text" name="helloWorld" avlue=""/><br>
<input type="submit" value="提交">
</form>
</body>
</html>

helloWorld.jsp:
<%@page contentType="text/html;chatset=GBK"%>
<html>
<head><title>利用struts输出</title></head>
<%
String str=(String)request.getAttribute("helloWorld");
%>
<body>
<font size='22'><%=str%></font>
</body>
</html>
...全文
280 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JundyLin 2008-10-19
  • 打赏
  • 举报
回复

结果还是这样.
怎么办?
longli123000 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yinyuan1987 的回复:]
引用 1 楼 wu209000 的回复:
<form name="HelloWorld" action="/Demo2/submit.do" method="post">
改成 <form name="HelloWorld" action="/submit.do" method="post">

正解,楼主没有必要把路径都写出来,映射文件会找到
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wu209000 的回复:]
<form name="HelloWorld" action="/Demo2/submit.do" method="post">
改成 <form name="HelloWorld" action="/submit.do" method="post">
[/Quote]
正解,楼主没有必要把路径都写出来,映射文件会找到
lihan6415151528 2008-10-19
  • 打赏
  • 举报
回复
action="/submit.do"
yuanyon7 2008-10-19
  • 打赏
  • 举报
回复
正确的做法是楼上,原因:
<servlet-mapping>
<servlet-name>actionServlet </servlet-name>
<url-pattern>*.do </url-pattern>
</servlet-mapping>

这是Action的一个映射 actionServlet 关联的Servvlet 配置 也叫中央控制器

他拦截的路径事 *.do <url-pattern>*.do </url-pattern> 而你在表单提交的是
="/Demo2/submit.do" actionServlet 一般截取的是submit 他根据submit 来转发到相应的action

所以你表单中的Action 直接配置成 action="submit.do" 记住不要/ 这个*.do 你可以在Web.xml改成其他

例如:*.jsp *.php *.aspx 等其他

-----------------------------Web.xml中的配置------------------------
<servlet>
<servlet-name>actionServlet </servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet </servlet-class>
<!--初始参数-->
<init-param>
<param-name>config </param-name>
<param-value>/WEB-INF/struts-config.xml </param-value>
</init-param>
<load-on-startup>1 </load-on-startup>
</servlet>
-------------------------------------------------------------------

wu209000 2008-10-19
  • 打赏
  • 举报
回复
<form name="HelloWorld" action="/Demo2/submit.do" method="post">
改成<form name="HelloWorld" action="/submit.do" method="post">
  • 打赏
  • 举报
回复
首先404错误就是提示你路径出现错误,

你重新发布一下,不重新发布他还是会按原来的执行的,
或重起一tomcat,再发布一下,看看

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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