`

spring4+hibernate4+struts2注解,class找不到bean

阅读更多

 最近想整合S2SH,采用的是spring4+hibernate4+struts2+maven+MySQL+jdk1.8+tomcat7.

整个项目采用注解实现:spring、hibernate都采用注解实现.

struts.xml:

<constant name="struts.objectFactory" value="spring"/>
<constant name="struts.devMode" value="true"/>
<constant name="struts.configuration.xml.reload" value="true"/>
<constant name="struts.serve.static.browserCache" value="false"/>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.i18n.reload" value="true"/>
<constant name="struts.multipart.maxSize" value="104857600"/>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
 
<package name="common" extends="struts-default"></package>
 
<package name="login" namespace="/login"     extends="common">
    <action name="login" class="userLogin">
        <result name="loginFail">fail.jsp</result>
        <result name="success">index.jsp</result>
    </action>
</package>

spring.xml:

<context:annotation-config/>
	<context:component-scan base-package="com.value.yun.modules" />

  

controller中的java代码:

package com.value.yun.modules.controller;

import com.opensymphony.xwork2.ActionSupport;
import com.value.yun.common.base.Encryption;
import com.value.yun.modules.entity.User;
import com.value.yun.modules.service.UserService;
import com.value.yun.utils.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by 丽 on 2015/4/16.
 */
@Controller
public class LoginController extends ActionSupport{
    public LoginController(){
        System.out.println("============login controller constructor==========================");
    }
    private User user;
    @Autowired
    private UserService userService;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @RequestMapping(value = "userLogin")
    public String login(){
        HttpServletRequest request = ServletActionContext.getRequest();
        if (user==null){
            request.setAttribute("loginFail","对象为空");
            return "loginFail";
        }
        if(StringUtils.isBlank(user.getLoginName())){
            request.setAttribute("loginFail","登录账号为空");
            return "loginFail";
        }
        if (StringUtils.isBlank(user.getPassword())){
            request.setAttribute("loginFail","登录密码为空");
            return "loginFail";
        }
        request.setAttribute("loginName",user.getLoginName());
        request.setAttribute("password", Encryption.encrytMD532(user.getPassword()));
        return "success";
    }
}

 上面无参构造方法是有执行的,在启动tomcat的时候执行的。

 

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
    <meta name="decorator" content="default"/>
    <title>欢迎来到登录界面</title>
</head>
<body>
    <h2>Hello World!</h2>
    <form action="${baseUrl}/login/login" method="post" class="loginForm">
        <table>
            <tr>
                <th>账号:</th>
                <td><input type="text" name="user.loginName"></td>
            </tr>
            <tr>
                <th>密码:</th>
                <td><input type="password" name="user.password"></td>
            </tr>
            <tr>
                <td><button type="submit">登录</button></td>
                <td><button type="reset">重置</button></td>
            </tr>
        </table>
    </form>

${loginName}<br>
${password}
</body>
</html>

 在点击登陆的时候,他就提示<action name="login" class="userLogin">这一行出错。

具体信息如下:

Unable to instantiate Action, userLogin, defined for 'login' in namespace '/login'userLogin - action - file:/D:/yun_systems/hua_yu/source/EASMS/target/EASMS/WEB-INF/classes/struts/login.xml:8:48

请问,有没有人知道这是怎么回事啊?

分享到:
评论
1 楼 yunlian0621 2015-04-27  
现在问题得到了解决,我将我解决的方案跟大家分享一下吧:

struts2与spring整合后,struts的action中的class是spring的bean的id,如果是注解自动生成的controller,那么action就必须要用这个controller类的类名小写,即就像我上面的LoginController类,在action中必须写成calss="loginController";
如果这个LoginController中有大于或等于2个的String类型返回的method,那么在action中的method属性中要注明是使用的那个method,否则将不会执行任何方法,即action中method应该写成method="login"或者method="方法名"即可。
如我上面只有一个String类型的返回方法(set、get方法除外),那么,我的method可以不用写,也可以写成method="login"。

相关推荐

    三大框架整合(Spring+Hibernate+Struts1/Struts2)

    【三大框架整合(Spring+Hibernate+Struts1/Struts2)】 在IT行业中,SSH(Struts + Spring + Hibernate)是经典的Java企业级开发框架组合,用于构建高效、可维护的Web应用程序。以下是整合这三大框架的详细步骤,...

    struts+spring+hibernate三大框架整合

    SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...

    spring+hibernate+struts2 +mybatis整合笔记

    ### Spring+Hibernate+Struts2+MyBatis 整合笔记 #### 一、SSM框架简介及整合意义 SSM框架是指Spring、SpringMVC和MyBatis三个开源框架的整合,通常用于快速开发Java Web应用。本篇笔记主要介绍如何将Spring、...

    Struts2+Spring+Hibernate+MySQL整合

    9. **更新Struts2配置**:在struts.xml中,将Action的class属性从完全限定类名改为Spring配置文件中定义的Bean ID,这样Struts2会通过Spring来实例化Action。 10. **整合Hibernate**:Hibernate是ORM(对象关系映射...

    ssh框架实例过程(MyEclipse+struts+spring+hibernate整合)

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个实例是为初学者设计的,通过MyEclipse集成开发环境,详细介绍了如何将这三大框架整合到一个登录工程中。下面将详细...

    最新Struts2.1+Spring2.5+Hibernate3.3整合开发

    4. **整合Struts2和Spring**:使用Struts2的Spring插件,将Action实例的创建和销毁交由Spring管理,通过`&lt;action&gt;`标签的`class`属性引用Spring中的bean。 5. **整合Spring和Hibernate**:通过Spring的...

    spring2.5+hibernate3.2+struts2.0组合配置说明

    - **对象关系映射**:Hibernate 通过配置文件或注解将 Java 对象映射到数据库表中,简化了数据访问层的开发工作。 - **查询语言**:提供了 HQL(Hibernate Query Language)和 Criteria API,这两种方式都可以方便地...

    Struts2+Spring+Hibernate组合开发

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各司其职,共同构建了一个强大的企业级应用开发环境。Struts2作为MVC(Model-View-Controller)架构的实现,负责处理用户请求,控制应用程序流程;...

    spring mvc + hibernate4整合文档

    &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&gt; &lt;property name="packagesToScan" value="com.zyg.ssh.bean"/&gt; &lt;prop key="hibernate.dialect"&gt;org....

    Spring2.5+Struts1.3.8+Hibernate3.0整合

    总结起来,Spring2.5 + Struts1.3.8 + Hibernate3.0的整合涉及到数据源、SessionFactory、事务管理、Struts配置等多个方面的配置和优化。通过以上步骤,可以有效地降低各层之间的耦合度,提高系统的可扩展性和可维护...

    Spring+Hibernate+Struts集成实例

    2. **集成Spring**:然后,在Struts中引入Spring,可以通过实现Spring-Struts的插件,或者在Struts Action类上使用Spring的`@Component`注解,使Action类成为Spring容器管理的bean。这样,Spring可以负责Action类的...

    struts2+spring+hibernate整合示例

    b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...

    struts2.1.8 + spring2.5.6 + hibernate3.3.2整合

    在Java Web开发领域,Struts2、Spring以及Hibernate是三个非常重要的开源框架,它们各自在不同的方面发挥着重要作用:Struts2用于构建MVC架构的Web应用;Spring作为依赖注入容器,简化了Java应用中的对象管理;...

    spring+struts+hibernate项目debug总结.rar

    《Spring+Struts+Hibernate(SSH)项目调试精要》 在Java Web开发领域,Spring、Struts和Hibernate组成的SSH框架组合是应用广泛的技术栈。它们分别负责不同层面的职责:Spring作为整体的容器,管理对象和依赖;...

    STRUTS+SPRING+HIBERNATE

    ### STRUTS+SPRING+HIBERNATE:关键技术知识点解析 #### 一、概述 在当前企业级应用开发中,Struts + Spring + Hibernate(SSH)是一种非常流行的技术组合,通常被称为“三大框架”。这三者分别负责不同的职责:...

    Spring3.0+Struts2.1+ Hibernate3.5融合步骤

    ### Spring3.0 + Struts2.1 + Hibernate3.5 融合步骤 在Java Web开发领域,Spring、Struts 和 Hibernate 这三个框架的结合被广泛应用于构建复杂的应用程序,通常被称为 SSH(Spring + Struts + Hibernate)架构。...

    Struts+Spring+Hibernate整合详细

    在`src`目录下创建的`struts.xml`文件用于定义Struts的Action,其中的`class`属性应与`applicationContext.xml`中定义的Bean ID相匹配,保证Action可以通过Spring的IoC容器进行实例化和依赖注入。 ### 日志配置 ...

    struts2+spring+hibernate整合步骤

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在模型-视图-控制器(MVC)架构中承担不同的角色。Struts2负责处理用户请求并控制应用程序流程,Spring提供依赖注入和面向切面编程,而Hibernate则...

    struts1 + hibernate + spring 实现文件上传

    2. **Struts1配置**:在Struts1的配置文件(struts-config.xml)中定义一个Action,指定处理文件上传的Form Bean和Action Class。 3. **ActionForm**:创建一个继承自Struts1的`ActionForm`类,添加`File`和`String...

Global site tag (gtag.js) - Google Analytics