服务器后台登陆使用struts,客户端登录使用servlet,但是现在客户端action不可用,错误:HTTP Status 404 - /em-mallServer/Login--------------------------------------------------------------------------------type Status reportmessage /em-mallServer/Logindescription The requested resource is not available.web:
<!-- struts配置的拦截 -->
<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>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping> <!-- android请求的拦截 -->
<servlet>
<servlet-name>android_login</servlet-name>
<servlet-class>com.xunfang.em_mallServer.servlet.MyServlet</servlet-class>
<init-param>
<param-name>code</param-name>
<param-value>GBK</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>android_login</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>jsp:
<center>
<form action="Login" method="post" name="myform"
onsubmit="javascript:return check();">
用户名:
<input type="text" name="username">
<br>
密码:
<input type="password" name="password">
<br>
<input type="submit" value="登录">
</form>
</center>struts:
<package name="struts2" extends="struts-default" namespace="/">
<action name="Login" class="com.xunfang.em_mallServer.action.LoginAction">
<result name="success">/main_page.jsp</result> <!-- 登录成功转到主页面 -->
<result name="failer">/index.jsp</result>
</action>客户端处理的servlet类可以运行正常,后台请求的action出现404错误,求大神解决

解决方案 »

  1.   

    把servlet配置放到struts之前就好了。或者把servlet的url改下
      

  2.   

    放到前面也没用啊,servlet的url怎么改??
      

  3.   

      <servlet-mapping>
            <servlet-name>android_login</servlet-name>
            <url-pattern>/user/android_login</url-pattern>
        </servlet-mapping>
    直接配置死,就访问http://ip:port/webapps/user/android_login就直接访问MyServlet了
      

  4.   

    碰到404,一看浏览器路径,在工程下能否找到相对路径;二看配置文件,拦截的url-pattern配置是否正确。
      

  5.   

    把过滤器放在struts过滤器的前面。
      

  6.   

    哦,看错。
    servlet和struts不冲突。
      

  7.   

    搞定了谢谢各位:<servlet>
    <servlet-name>android_login</servlet-name>
    <servlet-class>com.xunfang.em_mallServer.servlet.MyServlet</servlet-class>
    <init-param>
    <param-name>code</param-name>
    <param-value>GBK</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>android_login</servlet-name>
    <url-pattern>/user</url-pattern>
    </servlet-mapping> <!-- ======================================== -->
    <filter>
    <filter-name>redisp</filter-name>
    <filter-class>com.xunfang.em_mallServer.servlet.ReDispatcherFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>redisp</filter-name>
    <url-pattern>/</url-pattern>
    </filter-mapping> <!-- struts配置的拦截 -->
    <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>*.action</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    然后重写ReDispatcherFilter类:
    public class ReDispatcherFilter implements Filter {
    private int flag; public void destroy() {
    // TODO Auto-generated method stub } public void doFilter(ServletRequest req, ServletResponse resp,
    FilterChain chain) throws IOException, ServletException {
    boolean isIE = false;
    HttpServletRequest request = (HttpServletRequest) req;
    String target = request.getRequestURI();
    target = target.lastIndexOf("?") > 0 ? target.substring(target
    .lastIndexOf("/") + 1, target.lastIndexOf("?")
    - target.lastIndexOf("/")) : target.substring(target
    .lastIndexOf("/") + 1);
    System.out.println(target);
    System.out.println("111111111111----------->");
    }
    }