论坛首页 入门技术论坛

struts2整合hibernate,spring模型驱动的例子(本人原创)

浏览 8661 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-04-24  
首先到官方网站下载struts-2.0.6,将其lib下相应的包拷贝到项目中去
我的开发环境是eclipse3.2+tomcat5.5.20+JDK1.5.06+myeclipse5.1
基本布局如附件,以下是web.xml的配置
<web-app id="WebApp_9" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
        <filter-name>encodingFilter</filter-name>//解决中文问题
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

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

    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener//加载spring,但同时也需要在struts.properties中配置一下,见下面
        </listener-class>
    </listener>

</web-app>
struts.properties:
struts.objectFactory = spring//表示使用spring
在struts.xml中
    <include file="struts-default.xml"/>
    <package name="default" extends="struts-default">
    <interceptors>
    <interceptor-stack name="s2Stack">//l拦截器堆栈
    <interceptor-ref name="model-driven"/>//模型驱动
    <interceptor-ref name="params"/>
    </interceptor-stack>
    </interceptors>
    <action name="login" class="login.LoginAction" method="baocun">//在action中我自己定义的方法,页可以使用默认的execute方法。
    <result name="success">/success.jsp</result>//转到成功页面
    <result name="input">/fail.jsp</result>
    <interceptor-ref name="s2Stack"/>
    </action>
    </package>
在login.jsp中为
  <body>
  <form action="login.action" method="post">
                用户名:
                <input type="text" name="name" />//因为我们用了模型驱动,所以就不用如xx.name的形式了但首先的建立一个类logininfo.java,如下:
                <br />
                密码:
                <input type="password" name="password">
                <br />
                <input type="submit" value="提交" name="sub" />
                <input type="reset" value="重置" name="res" />
        </form>
  </body>
</html>
logininfo.java:
public class LoginInfo {//主要用于取得页面输入的值,一会在action中还会用到。
private String name;
private String password;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}
我建立了一个service,调用DAO去执行数据库操作。
package service;
import com.yourcompany.Admin;
import com.yourcompany.AdminDAO;;
public class LoginService {
    private AdminDAO adminDAO;

    public AdminDAO getAdminDAO() {
        return adminDAO;
    }

    public void setAdminDAO(AdminDAO adminDAO) {
        this.adminDAO = adminDAO;
    }
    public void saveinfo(Admin admin){
        adminDAO.save(admin);
    }
}
hibernate创建的DAO相信大家都会了,我就不粘贴上来了。
LoginAction如下:
import com.yourcompany.Admin;
import service.LoginService;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.yourcompany.LoginInfo;

public class LoginAction extends ActionSupport implements ModelDriven{//这里继承ActionSupport 同事实现ModelDriven
 
    /**
     *
     */
    private static final long serialVersionUID = -2144138760339549940L;
    LoginService loginService;
    LoginInfo logininfo=new LoginInfo();
    public String baocun() throws Exception{//对应与struts.xml中的method方法
        Admin admin=new Admin();
        System.out.println(logininfo.getName());
        admin.setName(logininfo.getName());
        admin.setPassword(logininfo.getPassword());
        loginService.saveinfo(admin);//保存前台的数据,插入数据库
        return SUCCESS;
    }
    public Object getModel() {
        // TODO 自动生成方法存根
        return logininfo;//这里就用到了logininfo.java
    }
    public LoginService getLoginService() {
        return loginService;
    }
    public void setLoginService(LoginService loginService) {
        this.loginService = loginService;
    }
}
一个struts2+spring+hibernate的简单整合例子完成了,有不对的地方还请大家一起交流。
最后说一下官方说可以运行与JDK1.4上,本人已经测试过,可以运行,只需将j4包下的文件拷贝到lib下,就可以了,但要注意如果用JDK1.5了,不要把j4下包和用于1.5的包都拷贝到项目lib下,会冲突,本人第一次写博客,希望大家一起交流。
  • 大小: 18.2 KB
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics