本人新手,正在学习J2EE,用SSH做一个简单的登录程序,但是点登陆按钮报错了,我对struts方面不是很熟,哪位高手帮帮忙?
(工具:MyEclipse 7.1, struts1.3,spring2.0 ,tomat6.0.20 )
页面提示错误:
HTTP Status 404 - /login.do--------------------------------------------------------------------------------type Status reportmessage /login.dodescription The requested resource (/login.do) is not available.--------------------------------------------------------------------------------Apache Tomcat/6.0.20login.jsp和index.jsp放在webapp目录下,相关的配置文件内容如下:
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" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>action</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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>/WEB-INF/pages/user/login.jsp</welcome-file>
  </welcome-file-list>
</web-app>struts-config.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans>
    <form-bean name="loginForm" type="com.kingriver.web.struts.form.LoginForm" />

</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp" name="loginForm"
path="/login" scope="request" parameter="method"
type="org.springframework.web.struts.DelegatingActionProxy" validate="false">
<forward name="fail" path="/login.jsp" />
<forward name="success" path="/index.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.kingriver.web.struts.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>applicationContext.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/krs"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>
com/kingriver/domainmodel/ArticleTable.hbm.xml
</value>
<value>
com/kingriver/domainmodel/UserTable.hbm.xml
</value>
</list>
</property>
</bean>
<bean id="articleTableDAO" class="com.kingriver.dao.ArticleTableDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userTableDAO" class="com.kingriver.dao.UserTableDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userService" class="com.kingriver.service.UserService">
<property name="userTableDAO">
<ref bean="userTableDAO"/>
</property>
</bean>
<bean name="/login" class="com.kingriver.web.struts.action.LoginAction">
<property name="userService">
<ref bean="userService"/>
</property>
</bean>
</beans>

解决方案 »

  1.   

    应该是你的映射出现问题了吧,因为提示说找不到文件 /login.do 
      

  2.   

    那个映射?是applicationContext.xml里的还是struts-config.xml里面的?
      

  3.   

    急啊,在线等呢,login.jsp的内容如下:
    <html> 
    <head>
    <title>用户登录</title>
    </head>
    <body>
    <form  action="/login.do" method="post" name="loginForm">
    userName : <input type="text" id="userName"/><br/>
    password : <input type="password" id="password"/><br/>

    <input type="submit" /><input type="reset"/>
    </form>
    </body>
    </html>
      

  4.   

    你的struts-config.xml放在哪里了?
      

  5.   


     <form  action="login.do" method="post" name="loginForm">
      userName :  <input type="text" id="userName"/> <br/>
      password :  <input type="password" id="password"/> <br/>   <input type="submit" /> <input type="reset"/>
       </form>
      

  6.   

    /login.do -->  login.do
      

  7.   

    把  表单  action="/login.do" 改成 action="login.do"
      

  8.   

    试试action="/login.do" 改成 action="/项目名/login.do" 
      

  9.   

    不好意思,改了重新启动后没有出现错误,地址栏跳到http://localhost:8086/kingriver/login.do但是页面一片空白,本来登陆成功应该是mapping到index.jsp上面啊,怎么回事呢?
      

  10.   

    你的Action那里的跳转页面看看.如果是用mapping跳转的话,路径是相当于forword跳转,注意一下细节
      

  11.   

    LoginAction.JAVA 程序是:
    public ActionForward userCheck(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    DynaActionForm loginForm = (DynaActionForm) form;// TODO Auto-generated method stub
    System.out.println("代码执行到LoginAction里面了!!!");
    String userName = loginForm.getString("userName");
    try {
    if (userService.userCheck(userName)) {
    System.out.println("登录成功!!");
    return mapping.findForward("success");
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println("登录失败!!");
    return mapping.findForward("fail");
    }
    我在第一行设置了断点,并没有执行到这,在控制台也没有输出:“代码执行到LoginAction里面了!!!”,难道是哪个配置没配好?
      

  12.   

    你直接http://localhost:8086/kingriver/login.jsp不就得了 
      

  13.   

    我本来就是用这个啊
    我现在的问题是没有执行LoginAction啊
      

  14.   

    你直接http://localhost:8086/kingriver/login.jsp不会出现jsp的页面?
     你提交之后才会转到loginAction里面!
      

  15.   

    我直接http://localhost:8086/kingriver/login.jsp是会出现jsp的页面
    提交后地址栏:http://localhost:8086/kingriver/login.do
    是空的页面
    我用设置断点,没有执行到LoginAction里面啊
      

  16.   

    你是用的dispatchAction还是Action ?我看到你的配置文件配了parameter这个属性。你知道这个属性的用法吗?如果是用dispatchAction才需要配parameter。然后在页面调用就是login.do?action="action里面的方法名",注。action=你在配置文件中parameter等于的名字。这里默认parameter="action".