错误404 - 未找到,服务器未找到与Request-URI匹配的任何内容

时间:2014-01-07 15:11:09

标签: jsp struts2 action

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"    
         version="3.0">
<display-name>struts2app</display-name>
 <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

这是我的struts.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>


    <package name="struts2app" extends="struts-default" namespace="/">
        <action name="insert"  class="info.trisan.Insert" method="execute">
            <result name="fail">/insert.jsp</result>
            <result name="success">/success.jsp</result>
        </action>

    </package>
 </struts>

这是我的jsp

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html>
 <head></head>
 <body>
 <form action="insert">
<label>Serial no</label>
<input type="text" name="sno"/><br/>
<label>Ser Name</label>
<input type="text"  name="sname"/><br/>
<label>Ser country</label>
<input type="text" name="scountry"/><br/>

<input type="submit" value="click me"/>
</form>
</body>
</html>

这是我的动作类

 package info.trisan;
 import java.sql.*;

 public class Insert {
String sno;
String sname;
String scountry;

public String getSno() {
    return sno;
}

public void setSno(String sno) {
    this.sno = sno;
}

public String getSname() {
    return sname;
}

public void setSname(String sname) {
    this.sname = sname;
}


public String getScountry() {
    return scountry;
}

public void setScountry(String scountry) {
    this.scountry = scountry;
}

public String execute(){
        String output="fail";

        int sn=Integer.parseInt(sno);
    try{
        Class.forName("com.mysql.jdbc.Driver");
        Connection    con=DriverManager.getConnection("url", "abc", "abc");
        PreparedStatement pst=con.prepareStatement("insert into details values(?,?,?");
        int n=pst.executeUpdate();
        if(n==sn){
            output="success";
        }           
    }
    catch(SQLException sqe){
        System.out.println(sqe.toString());
    }
    catch(ClassNotFoundException sqe){
        System.out.println(sqe.toString());
            }       
        return output;
}

 }

这里我试图在welogic12中使用此代码运行

servser地址/ struts2app / 然后打开jsp页面,一旦点击提交它就会显示以下错误

错误404 - 未找到 来自RFC 2068超文本传输​​协议 - HTTP / 1.1: 10.4.5 404 Not Found

服务器未找到与Request-URI匹配的任何内容。没有说明该病症是暂时的还是永久性的。

如果服务器不希望将此信息提供给客户端,则可以使用状态代码403(禁止)。如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码。

我也尝试使用StrutsPrepareAndExecuteFilter,没有结果 我无法理解,有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

最好的解决方案是 1)如果web.xml文件中有<transport-guarantee>标记,则将其值从CONFIDENTIAL更改为NONE

2)如果第一个解决方案不起作用,那么假设您的项目的登录页面是 http://localhost:8080/ABC/login.jsp然后,复制ABC并将其粘贴到application.xml文件的<context-root>标记中。 这项技术对我有用