您的位置:首页 > 编程语言 > Java开发

struts 2+hibernate 3+spring基本套路小结

2008-07-11 20:09 411 查看
任何东西都是有一定的套路和规律的,struts 2+hibernate 3+spring也一样,struts2 比struts1爽很多了,但目前唯一觉得不爽的

是struts2 居然没什么好的IDE工具去支持设计之,比如DW8,希望以后有所改进.

这里,以一个简单的用户注册,登陆去说明这三者之间的简单组合关系,其他都可以按这样的去做:

1 建立domain层

建立包domain,里面有个user.java

public class User {

private Long id;

private String userName;

private String password;

//getter,setter.....

2)建立user.hbm.xml

省略

3) 建立dao层

   建立dao包,有userdao.java


import java.util.List;

import liao.domain.User;

public interface UserDAO {

public User findById(long id);

public void save(User user);

public List<User> findByUserNameAndPassword(String userName,String password);

public List<User> findByUserName(String userName);

}

4 建立userdaoimpl.java


import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import liao.dao.UserDAO;

import liao.domain.User;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{

public User findById(long id) {

return (User)getHibernateTemplate().get(User.class, id);

}

public List<User> findByUserName(String userName) {

return getHibernateTemplate().find("from User where userName=?",new String[]{userName});

}

public List<User> findByUserNameAndPassword(String userName, String password) {

return getHibernateTemplate().find("from User where userName=? and password=?",new String[]{userName,password});

}

public void save(User user) {

getHibernateTemplate().saveOrUpdate(user);

}

}

5 建立sevrice层,建立好service包

import edu.jlu.fuliang.domain.User;

public interface UserManageService {

public void register(User user);

public boolean login(User user);

}

6 service的实现

  
import java.util.List;

import liao.Service.UserManageService;

import liao.dao.UserDAO;

import liao.domain.User;

public class UserManageServiceImpl implements UserManageService{

private UserDAO userDAO;

public boolean login(User user) {

List<User> users = userDAO.findByUserNameAndPassword(user.getUserName(), user.getPassword()) ;

return users.size() != 0;

}

public void register(User user) {

userDAO.save(user);

}



public UserDAO getUserDAO() {

return userDAO;

}

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

}

7 之后就是struts2的action层了

  首先是注册registeraction.java


import com.opensymphony.xwork2.ActionSupport;

import liao.Service.UserManageService;

import liao.domain.User;

public class RegisterAction extends ActionSupport{

private User user;

private UserManageService userManageService;



public String execute()throws Exception{

userManageService.register(user);

return SUCCESS;

}



public User getUser() {

return user;

}



public void setUser(User user) {

this.user = user;

}



public void setUserManageService(UserManageService userManageService) {

this.userManageService = userManageService;

}

}

登陆的loginaction.java


public class LoginAction extends ActionSupport{

private User user;

private UserManageService userManageService;



public String execute()throws Exception{

if(userManageService.login(user)){

ServletActionContext.getContext().getSession().put("user",user);

return SUCCESS;

}

return LOGIN;

}

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

public void setUserManageService(UserManageService userManageService) {

this.userManageService = userManageService;

}

}

8 配置好各类的applcaition.xml,建议分开几个来配置,避免全部放在一个xml

application-db.xml:比较传统,不说了

 application-dao.xml:

<bean id="userDAO" class="liao.dao.impl.UserDAOImpl">

<property name="sessionFactory">

<ref bean="sessionFactory"/>

</property>

</bean>

application-service.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"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">
 <bean id="userManageService" class="liao.Service.impl.UserManageServiceImpl">

<property name="userDAO">

<ref bean="userDAO"/>

</property>

</bean>

<aop:config>

<aop:pointcut id="serviceOperation" expression="execution(* edu.jlu.fuliang.Service.impl.*ServiceImpl.*(..))"/>

<aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/>

</aop:config>



<tx:advice id="txAdvice">

<tx:attributes>

<tx:method name="get*" read-only="true"/>

<tx:method name="*"/>

</tx:attributes>

</tx:advice>



<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory">

<ref bean="sessionFactory"/>

</property>

</bean>

9 struts.xml

<action name="login" class="loginAction">

<result name="success">/uploadSong.jsp</result>

<result name="login">/login.jsp</result>

</action>



<action name="register" class="registerAction">

<result name="success" type="redirect-action">listSong</result>

<result name="input">/register.jsp</result>

</action>

10 web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app 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> struts-cleanup </filter-name>

<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

</filter>



<filter>

<filter-name>sitemesh</filter-name>

<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>

</filter>



<filter>

<filter-name>struts</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>



<filter>

<filter-name>hibernateFilter</filter-name>

<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

</filter>



<filter-mapping>

<filter-name>struts-cleanup</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>





<filter-mapping>

<filter-name>sitemesh</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>





<filter-mapping>

<filter-name>struts</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>



<filter-mapping>

<filter-name>hibernateFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>



<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext-*.xml</param-value>

</context-param>



<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: