请问struts1.2+spring2.0+hibernate3.2谁有一个能跑的简单程序

问题描述

请问struts1.2+spring2.0+hibernate3.2谁有一个能跑的简单程序?我已经建立了N+1次了, 每次都以失败结束,实在受不了了,请帮忙有的发个,再次谢谢

解决方案

这个发个完整的确实很辛苦啊。我只能从我的Acegi练习中截取一部分(其实就是从AppFuse和SpringSide中抄来了的,综合了一下 ),楼主适当调整一下(其实,影响你成败的就是那几个配置文件,其它的按部就班,别犯低级错误就行):package com.zhaipuhong.portal.dao.hibernate;import java.io.Serializable;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.orm.ObjectRetrievalFailureException;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.zhaipuhong.portal.dao.Dao;public class BaseDaoHibernate extends HibernateDaoSupport implements Dao {protected final Log log = LogFactory.getLog(getClass());/** * @see com.zhaipuhong.portal.dao.Dao#saveObject(java.lang.Object) */public Object getObject(Class clazz, Serializable id) {Object o = getHibernateTemplate().get(clazz, id);if(o == null){throw new ObjectRetrievalFailureException(clazz, id);}return o;} /** * @see com.zhaipuhong.portal.dao.Dao#getObjects(java.lang.Class) */public List getObjects(Class clazz) {return getHibernateTemplate().loadAll(clazz);} /** * @see com.zhaipuhong.portal.dao.Dao#getObject(java.lang.Class, java.io.Serializable) */public void removeObject(Class clazz, Serializable id) {getHibernateTemplate().delete(getObject(clazz, id));}/** * @see com.zhaipuhong.portal.dao.Dao#saveObject(java.lang.Object) */public void saveObject(Object o) {getHibernateTemplate().saveOrUpdate(o);}}package com.zhaipuhong.portal.dao.hibernate;import java.util.List;import org.acegisecurity.userdetails.UserDetails;import org.acegisecurity.userdetails.UserDetailsService;import org.acegisecurity.userdetails.UsernameNotFoundException;import org.springframework.dao.DataAccessException;import org.springframework.orm.ObjectRetrievalFailureException;import com.zhaipuhong.portal.dao.TUserDao;import com.zhaipuhong.portal.model.TUser;public class TUserDaoHibernate extends BaseDaoHibernate implements TUserDao, UserDetailsService {/** * @see com.zhaipuhong.portal.dao.TUserDao#getTUser(java.lang.Long) */public TUser getTUser(Long userId) {TUser user = (TUser)this.getHibernateTemplate().get(TUser.class, userId);if(user == null){log.warn("Sorroy, user '" + userId + "' not found ...");throw new ObjectRetrievalFailureException(TUser.class, userId);}return user;}/** * @see com.zhaipuhong.portal.dao.TUserDao#getTUsers(com.zhaipuhong.portal.model.TUser) */public List getTUsers(TUser user) {return getHibernateTemplate().find("from TUser u");}public void removeTUser(Long userId) {// TODO Auto-generated method stub}public void saveTUser(TUser user) {if(log.isDebugEnabled()){log.debug("user's id = " + user.getId());}getHibernateTemplate().saveOrUpdate(user);getHibernateTemplate().flush();} //下面这个方法是做Acegi练习时用的,楼主可以自己取舍public UserDetails loadUserByUsername(String username)throws UsernameNotFoundException, DataAccessException {List users = getHibernateTemplate().find("from TUser where username=?", username);if(users == null || users.isEmpty()){throw new UsernameNotFoundException("user '" + username + "' not found...");}else{return (UserDetails)users.get(0);}}}package com.zhaipuhong.portal.dao.hibernate;import java.io.Serializable;import java.util.List;import com.zhaipuhong.portal.dao.TRoleDao;import com.zhaipuhong.portal.model.TRole;public class TRoleDaoHibernate extends BaseDaoHibernate implements TRoleDao {public TRole getTRoleByName(String rolename) {// TODO Auto-generated method stubreturn null;}public List getTRoles(TRole role) {// TODO Auto-generated method stubreturn null;}public void removeTRole(String rolename) {// TODO Auto-generated method stub}public void saveTRole(TRole role) {// TODO Auto-generated method stub}}package com.zhaipuhong.portal.dao;import java.io.Serializable;import java.util.List;public interface Dao {/** * get all objects of a particular type * @param clazz the type of objects * @return List of objects */ public List getObjects(Class clazz); /** * get an object based on class and id. * @param clazz model class to lookup, please look out the model class * @param id the identifier of the class * @return */ public Object getObject(Class clazz, Serializable id); /** * save an object including that both update and insert * @param o the object to save */ public void saveObject(Object o); /** * delete an object based on class and id * @param clazz object class * @param id object id */ public void removeObject(Class clazz, Serializable id);}package com.zhaipuhong.portal.dao;import java.util.List;import com.zhaipuhong.portal.model.TUser;public interface TUserDao extends Dao {/** * Get the user base on the userId * @param userId the user's identify * @return TUser a user object */ public TUser getTUser(Long userId); /** * Get a list of user base on the parameters pass in * @param user the user type to look up * @return List list of users */ public List getTUsers(TUser user ); /** * Save the user's information * @param user the user object to be saved */ public void saveTUser(TUser user); /** * Remove the user by user's identify * @param userId the user's identify */ public void removeTUser(Long userId);}package com.zhaipuhong.portal.dao;import java.util.List;import com.zhaipuhong.portal.model.TRole;public interface TRoleDao extends Dao {/** * Get role base on role name * @param rolename the role name * @return TRole rose object */ public TRole getTRoleByName(String rolename); /** * Get a list of roles base on the parameters role * @param role the role type * @return List a list of roles */ public List getTRoles(TRole role); /** * Save a role object * @param role the role object to be saved */ public void saveTRole(TRole role); /** * Remove a role base on the role name * @param rolename the rose's name */ public void removeTRole(String rolename);}package com.zhaipuhong.portal.model;import java.io.Serializable;import java.util.HashSet;import java.util.Set;import org.acegisecurity.GrantedAuthority;import org.acegisecurity.userdetails.UserDetails;import org.apache.commons.lang.builder.ToStringBuilder;import org.apache.commons.lang.builder.ToStringStyle;public class TUser extends BaseObject implements Serializable, UserDetails {// Fieldsprivate static final long serialVersionUID = -7825485833495586451L;private Long id;private String username;private String password;private String passwordHint;private String name;private String phoneNumber;private String mobileNumber;private Address address = new Address();;private String email;private boolean accountExpired;private boolean accountLocked;private boolean accountEnable;private Integer version;private String website;private Set roles = new HashSet();// Constructors/** default constructor */public TUser() {}/** minimal constructor */public TUser(Long id) {this.id = id;}/** full constructor */public TUser(Long id, String username, String password, String name,String phoneNumber, String mobileNumber, Address address,String email, boolean accountExpired, boolean accountLocked,boolean accountEnable, Integer version, String website, Set roles) {this.id = id;this.username = username;this.password = password;this.name = name;this.phoneNumber = phoneNumber;this.mobileNumber = mobileNumber;this.address = address;this.email = email;this.accountExpired = accountExpired;this.accountLocked = accountLocked;this.accountEnable = accountEnable;this.version = version;this.website = website;this.roles = roles;}// Property accessorspublic Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getUsername() {return this.username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}public String getPasswordHint() {return passwordHint;}public void setPasswordHint(String passwordHint) {this.passwordHint = passwordHint;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getPhoneNumber() {return this.phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}public String getMobileNumber() {return this.mobileNumber;}public void setMobileNumber(String mobileNumber) {this.mobileNumber = mobileNumber;}public Address getAddress() {return this.address;}public void setAddress(Address address) {this.address = address;}public String getEmail() {return this.email;}public void setEmail(String email) {this.email = email;}public boolean getAccountExpired() {return this.accountExpired;}public void setAccountExpired(boolean accountExpired) {this.accountExpired = accountExpired;}public boolean getAccountLocked() {return this.accountLocked;}public void setAccountLocked(boolean accountLocked) {this.accountLocked = accountLocked;}public boolean getAccountEnable() {return this.accountEnable;}public void setAccountEnable(boolean accountEnable) {this.accountEnable = accountEnable;}public Integer getVersion() {return this.version;}public void setVersion(Integer version) {this.version = version;}public String getWebsite() {return this.website;}public void setWebsite(String website) {this.website = website;}public Set getRoles() {return this.roles;}public void setRoles(Set roles) {this.roles = roles;}/** * @see org.acegisecurity.userdetails.UserDetails#getAuthorities() */public GrantedAuthority[] getAuthorities() {// TODO Auto-generated method stub//new String[]{"ROLE_HEAD_OF_ENGINEERING"};TRole r = new TRole();r.setName("ROLE_HEAD_OF_ENGINEERING");Set rs = new HashSet();rs.add(r);return (GrantedAuthority[]) rs.toArray(new GrantedAuthority[0]);}/** * @see org.acegisecurity.userdetails.UserDetails#isAccountNonExpired() */public boolean isAccountNonExpired() {// TODO Auto-generated method stubreturn !getAccountExpired();}/** * @see org.acegisecurity.userdetails.UserDetails#isAccountNonLocked() */public boolean isAccountNonLocked() {// TODO Auto-generated method stubreturn !getAccountLocked();}/** * @see org.acegisecurity.userdetails.UserDetails#isCredentialsNonExpired() */public boolean isCredentialsNonExpired() {// TODO Auto-generated method stubreturn true;}/** * @see org.acegisecurity.userdetails.UserDetails#isEnabled() */public boolean isEnabled() {// TODO Auto-generated method stubreturn getAccountEnable();}@Overridepublic boolean equals(Object o) {if(this == o) return true;if(!(o instanceof TUser)) return false;final TUser user = (TUser)o;if(username != null ? !username.equals(user.getUsername()) : user.getUsername() != null)return false;return true;}@Overridepublic int hashCode() {return (username != null ? username.hashCode() : 0);}@Overridepublic String toString() {return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE) .append("id", this.id) .append("username", this.username) .append("accountEnable", this.accountEnable).toString();}}package com.zhaipuhong.portal.model;import java.io.Serializable;import org.apache.commons.lang.builder.ToStringBuilder;import org.apache.commons.lang.builder.ToStringStyle;public class Address extends BaseObject implements Serializable{private static final long serialVersionUID = -8184668368278258023L;protected String country; protected String province; protected String city; protected String address; protected String postCode; public Address() {}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPostCode() {return postCode;}public void setPostCode(String postCode) {this.postCode = postCode;}@Overridepublic boolean equals(Object o) {if(this == o) return true;if(!(o instanceof Address)) return false;Address addr = (Address)o;if(address != null ? !address.equals(addr.getAddress()) : addr.getAddress() != null)return false;if(country != null ? !country.equals(addr.getCountry()) : addr.getCountry() != null)return false;if(province != null ? !province.equals(addr.getProvince()) : addr.getProvince() != null)return false;if(city != null ? !city.equals(addr.getCity()) : addr.getCity() != null)return false;if(postCode != null ? !postCode.equals(addr.getPostCode()) : addr.getPostCode() != null)return false;return false;}@Overridepublic int hashCode() {int result;result = (address != null ? address.hashCode() : 0);result = 29*result + (country != null ? country.hashCode() : 0);result = 29*result + (province != null ? province.hashCode() : 0);result = 29*result + (city != null ? city.hashCode() : 0);result = 29*result + (postCode != null ? postCode.hashCode() : 0);return result;}@Overridepublic String toString() {return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append("address", this.address).append("country", this.country).append("province", this.province).append("postCode", this.postCode).toString();} }package com.zhaipuhong.portal.model;import java.io.Serializable;import java.util.HashSet;import java.util.Set;import org.acegisecurity.GrantedAuthority;import org.apache.commons.lang.builder.ToStringBuilder;import org.apache.commons.lang.builder.ToStringStyle;/** * TRole generated by MyEclipse - Hibernate Tools */public class TRole extends BaseObject implements Serializable, GrantedAuthority {// Fieldsprivate static final long serialVersionUID = -5930649302512433094L;private Long id;private String name;private String descn;private Set users = new HashSet();private Set permissions = new HashSet();// Constructors/** default constructor */public TRole() {}/** minimal constructor */public TRole(Long id) {this.id = id;}/** full constructor */public TRole(Long id, String name, String descn, Set users, Set permissions) {this.id = id;this.name = name;this.descn = descn;this.users = users;this.permissions = permissions;}// Property accessorspublic Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getDescn() {return this.descn;}public void setDescn(String descn) {this.descn = descn;}public Set getUsers() {return this.users;}public void setUsers(Set users) {this.users = users;}public Set getPermissions() {return this.permissions;}public void setPermissions(Set permissions) {this.permissions = permissions;}public String getAuthority() {return getName();}@Overridepublic boolean equals(Object o) {if(this == o) return true;if(!(o instanceof TRole)) return false;final TRole role = (TRole)o;if(name != null ? name.equals(role.getName()) : role.getName() != null)return false;return true;}@Overridepublic int hashCode() {return (name != null ? name.hashCode() : 0);}@Overridepublic String toString() {return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append("roleid", this.getId()).append("name", this.getName()).toString();}}package com.zhaipuhong.portal.model;import java.io.Serializable;public abstract class BaseObject implements Serializable { public abstract String toString(); public abstract boolean equals(Object o); public abstract int hashCode();}package com.zhaipuhong.portal.service.impl;import java.io.Serializable;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.zhaipuhong.portal.dao.Dao;import com.zhaipuhong.portal.service.Manager;public class BaseManager implements Manager {protected final Log log = LogFactory.getLog(getClass());protected Dao dao = null;/** * @see com.zhaipuhong.portal.service.Manager#setDao(com.zhaipuhong.portal.dao.Dao) */public void setDao(Dao dao) {this.dao = dao;}/** * @see com.zhaipuhong.portal.service.Manager#getObject(java.lang.Class, java.io.Serializable) */public Object getObject(Class clazz, Serializable id) {return dao.getObject(clazz, id);}/** * @see com.zhaipuhong.portal.service.Manager#getObjects(java.lang.Class) */public List getObjects(Class clazz) {return dao.getObjects(clazz);}/** * @see com.zhaipuhong.portal.service.Manager#removeObject(java.lang.Class, java.io.Serializable) */public void removeObject(Class clazz, Serializable id) {dao.removeObject(clazz, id);}/** * @see com.zhaipuhong.portal.service.Manager#saveObject(java.lang.Object) */public void saveObject(Object o) {dao.saveObject(o);}}package com.zhaipuhong.portal.service.impl;import java.util.List;import org.springframework.dao.DataIntegrityViolationException;import com.zhaipuhong.portal.dao.TUserDao;import com.zhaipuhong.portal.model.TUser;import com.zhaipuhong.portal.service.TUserManager;public class TUserManagerImpl extends BaseManager implements TUserManager {private TUserDao dao;/** * @see com.zhaipuhong.portal.service.TUserManager#setTuserDao(com.zhaipuhong.portal.dao.TUserDao) */public void setTuserDao(TUserDao dao) {this.dao = dao;}/** * @see com.zhaipuhong.portal.service.TUserManager#getTUser(java.lang.String) */public TUser getTUser(String userId) {return dao.getTUser(new Long(userId));}/** * @see com.zhaipuhong.portal.service.TUserManager#getTUsers(com.zhaipuhong.portal.model.TUser) */public List getTUsers(TUser user) {return dao.getTUsers(user);} /** * @see com.zhaipuhong.portal.service.TUserManager#removeTUser(java.lang.String) */public void removeTUser(String userId) {dao.removeTUser(new Long(userId));}/** * @throws Exception * @see com.zhaipuhong.portal.service.TUserManager#saveTUser(com.zhaipuhong.portal.model.TUser) */public void saveTUser(TUser user) throws Exception{//if a new user, convert the username to lower caseif(user.getVersion() == null){user.setUsername(user.getUsername().toLowerCase());}try{dao.saveTUser(user);}catch(DataIntegrityViolationException ex){throw new Exception("User '" + user.getUsername() + "' already exists!");}}}package com.zhaipuhong.portal.service.impl;import java.util.List;import com.zhaipuhong.portal.dao.TRoleDao;import com.zhaipuhong.portal.model.TRole;import com.zhaipuhong.portal.service.TRoleManager;public class TRoleManagerImpl extends BaseManager implements TRoleManager {private TRoleDao dao;public void setTroleDao(TRoleDao dao) {this.dao = dao;}/** * @see com.zhaipuhong.portal.service.TRoleManager#getTRole(java.lang.String) */public TRole getTRole(String rolename) {return dao.getTRoleByName(rolename);}/** * @see com.zhaipuhong.portal.service.TRoleManager#getTRoles(com.zhaipuhong.portal.model.TRole) */public List getTRoles(TRole role) {return dao.getTRoles(role);}/** * @see com.zhaipuhong.portal.service.TRoleManager#removeTRole(java.lang.String) */public void removeTRole(String rolename) {dao.removeTRole(rolename);}/** * @see com.zhaipuhong.portal.service.TRoleManager#saveTRole(com.zhaipuhong.portal.model.TRole) */public void saveTRole(TRole role) {dao.saveTRole(role);}}package com.zhaipuhong.portal.service;import java.io.Serializable;import java.util.List;import com.zhaipuhong.portal.dao.Dao;public interface Manager {/** * No special to say * @param dao */ public void setDao(Dao dao); /** * get a all objects of a particular type * @param clazz the type of objects * @return List of objects */ public List getObjects(Class clazz); /** * * @param clazz model class to look up * @param id the identifier of the class * @return an object */ public Object getObject(Class clazz, Serializable id); /** * save an object * @param o the object to save */ public void saveObject(Object o); /** * delete an object based on class and id * @param clazz model class to look up * @param id the identifier of the class */ public void removeObject(Class clazz, Serializable id);}package com.zhaipuhong.portal.service;import java.util.List;import com.zhaipuhong.portal.dao.TUserDao;import com.zhaipuhong.portal.model.TUser;public interface TUserManager {/** * Set the dao for communication with the data layer * @param dao the user dao prompt */ public void setTuserDao(TUserDao dao); /** * Get the user's information base on the parameters pass in * @param userId the user's identify * @return TUser the user object */ public TUser getTUser(String userId); /** * Get a list of user base on the parameters pass in * @param user a user object * @return List a list of user */ public List getTUsers(TUser user); /** * Save a user * @param user the user to be saved * @throws Exception */ public void saveTUser(TUser user) throws Exception; /** * Remove a user by the user's id * @param userId the user's id */ public void removeTUser(String userId);}package com.zhaipuhong.portal.service;import java.util.List;import com.zhaipuhong.portal.model.TRole;public interface TRoleManager extends Manager { /** * Get the role's information base on the parameters pass in * @param rolename the role's name * @return TRole the role object */public TRole getTRole(String rolename); /** * Get a list of role base on the parameters pass in * @param role a role object * @return List a list of role */public List getTRoles(TRole role); /** * Save a role * @param role the role to be saved */public void saveTRole(TRole role); /** * Remove a rolename by the role's name * @param rolename the role's name */public void removeTRole(String rolename);}package com.zhaipuhong.portal.webapp.action;import java.util.Date;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.converters.IntegerConverter;import org.apache.commons.beanutils.converters.LongConverter;import org.apache.struts.actions.DispatchAction;import org.springframework.context.ApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;public class BaseAction extends DispatchAction {private static Long defaultLong = null;/* * Register converter tools */static {ConvertUtils.register(new LongConverter(defaultLong), Long.class);ConvertUtils.register(new IntegerConverter(defaultLong), Integer.class);}/** * Get initialize bean in spring application context * @param name the name of the bean * @return Object the bean of request */public Object getBean(String name) {ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext()); return ctx.getBean(name);}}package com.zhaipuhong.portal.webapp.action;public final class TUserAction extends BaseAction {}package com.zhaipuhong.portal.webapp.form;import java.io.Serializable;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionMapping;import org.apache.struts.validator.ValidatorForm;public class BaseForm extends ValidatorForm implements Serializable{ public boolean equals(Object o){ return false; } public int hashCode(){ return 0; } public String toString(){ return null; }@Overridepublic ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {// TODO Auto-generated method stub//return super.validate(mapping, request);return null;} }package com.zhaipuhong.portal.webapp.form;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class TUserForm extends BaseForm implements Serializable { protected String id; protected String username; protected String password; protected String confirmPassword; protected String passwordHint; protected String name; protected String version; protected String website; protected String email; protected AddressForm address = new AddressForm(); protected Set roles = new HashSet(); protected boolean accountExpire; protected boolean accountLocked; protected boolean accountEnable;public TUserForm() {}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getConfirmPassword() {return confirmPassword;}public void setConfirmPassword(String confirmPassword) {this.confirmPassword = confirmPassword;}public String getPasswordHint() {return passwordHint;}public void setPasswordHint(String passwordHint) {this.passwordHint = passwordHint;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public String getWebsite() {return website;}public void setWebsite(String website) {this.website = website;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public AddressForm getAddress() {return address;}public void setAddress(AddressForm address) {this.address = address;}public Set getRoles() {return roles;}public void setRoles(Set roles) {this.roles = roles;}public boolean isAccountExpire() {return accountExpire;}public void setAccountExpire(boolean accountExpire) {this.accountExpire = accountExpire;}public boolean isAccountLocked() {return accountLocked;}public void setAccountLocked(boolean accountLocked) {this.accountLocked = accountLocked;}public boolean isAccountEnable() {return accountEnable;}public void setAccountEnable(boolean accountEnable) {this.accountEnable = accountEnable;}}package com.zhaipuhong.portal.webapp.form;import java.io.Serializable;public class AddressForm extends BaseForm implements Serializable { protected String address; protected String country; protected String province; protected String city; protected String postCode;public AddressForm() {}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getPostCode() {return postCode;}public void setPostCode(String postCode) {this.postCode = postCode;} }package com.zhaipuhong.portal.webapp.form;import java.io.Serializable;import javax.servlet.ServletRequest;import org.apache.struts.action.ActionMapping;public class TRoleForm extends BaseForm implements Serializable {public TRoleForm() {}@Overridepublic void reset(ActionMapping mapping, ServletRequest request) {// TODO Auto-generated method stub//super.reset(mapping, request);}}本人认为下面的文件才是重要的,上面的东西其实都差不多。web.xml,其中<error-page>楼主可以考虑取舍。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Portal WebSite</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml</param-value> </context-param> <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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>acegiFilter</filter-name> <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class> <init-param> <param-name>targetClass</param-name> <param-value>org.acegisecurity.util.FilterChainProxy</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>acegiFilter</filter-name> <url-pattern>/j_security_check</url-pattern> </filter-mapping> <filter-mapping> <filter-name>acegiFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <session-config> <session-timeout>15</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>400</error-code> <location>/index.jsp</location> </error-page> <error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> </web-app>struts-config.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="userForm" type="com.zhaipuhong.portal.webapp.form.TUserForm"/> <form-bean name="addressForm" type="com.zhaipuhong.portal.webapp.form.AddressForm"/> <form-bean name="roleForm" type="com.zhaipuhong.portal.webapp.form.TRoleForm"/> </form-beans> <global-forwards> <forward name="logout" path="index.jsp"/> </global-forwards> <action-mappings> <action path="/saveUser" type="com.zhaipuhong.portal.webapp.action.TUserAction" name="userForm" scope="request" validate="false"> <forward name="list" path="/WEB-INF/pages/usermgr/userList.jsp" redirect="false"/> </action> </action-mappings></struts-config>applicationContext-resources.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" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/portal"/> <property name="username" value="portal"/> <property name="password" value="123456"/> <property name="maxActive" value="100"/> <property name="maxIdle" value="30"/> <property name="maxWait" value="1000"/> <property name="defaultAutoCommit" value="true"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="60"/> <property name="logAbandoned" value="true"/> </bean></beans>applicationContext-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-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><aop:config><aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..))"/></aop:config><tx:advice id="txAdvice"><tx:attributes><tx:method name="get*" read-only="true"/><tx:method name="*"/></tx:attributes></tx:advice><bean id="manager" class="com.zhaipuhong.portal.service.impl.BaseManager"><property name="dao" ref="dao"/></bean><bean id="tUserManager" class="com.zhaipuhong.portal.service.impl.TUserManagerImpl"><property name="tuserDao" ref="tuserDao"/></bean><bean id="tRoleManager" class="com.zhaipuhong.portal.service.impl.TRoleManagerImpl"><property name="troleDao" ref="troleDao"/></bean></beans>applicationContext-hibernate.xml,配置hibernate<?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"> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="mappingResources"> <list> <value>com/zhaipuhong/portal/model/TUser.hbm.xml</value> <value>com/zhaipuhong/portal/model/TRole.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.query.substitutions">true '1', false '0'</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <!-- Hibernate Transaction Manager --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- Base Dao --> <bean id="dao" class="com.zhaipuhong.portal.dao.hibernate.BaseDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- TUserDao's Hibernate Implementation --> <bean id="tuserDao" class="com.zhaipuhong.portal.dao.hibernate.TUserDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- TRoleDao's Hibernate Implementation --> <bean id="troleDao" class="com.zhaipuhong.portal.dao.hibernate.TRoleDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"/> </bean></beans>applicationContext-security.xml,以为是acegi练习,少不了有个配置文件了<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <!-- ========================= Filter Chain ============================ --> <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"><property name="filterInvocationDefinitionSource"><value>CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT/**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor</value></property></bean> <!-- Access authentication object --><bean id="httpSessionContextIntegrationFilter"class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" /> <!-- Clear after logout --><bean id="logoutFilter"class="org.acegisecurity.ui.logout.LogoutFilter"><constructor-arg value="/logoutSuccess.jsp" /> <!-- logout success to redirecte to --><constructor-arg><list><bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" /></list></constructor-arg></bean> <!-- Process authentication request --><bean id="authenticationProcessingFilter"class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"><property name="authenticationManager" ref="authenticationManager" /><property name="authenticationFailureUrl" value="/login.jsp?login_error=1" /> <!-- login failure to redirected to --><property name="defaultTargetUrl" value="/protected/protected1.jsp" /> <!-- login success to redirecte to --><property name="filterProcessesUrl" value="/j_security_check" /> <!-- login request action --></bean> <!-- Decorate HttpServletRequest which container request parameters,header,Date,cookies etc. --><bean id="securityContextHolderAwareRequestFilter"class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter" /><!-- Configure anonymous user and authentication --><bean id="anonymousProcessingFilter"class="org.acegisecurity.providers.anonymous.AnonymousProcessingFilter"><property name="key" value="anonymous" /><property name="userAttribute" value="anonymous,ROLE_ANONYMOUS" /></bean> <!-- Configure the map relation of exception & URL --><bean id="exceptionTranslationFilter"class="org.acegisecurity.ui.ExceptionTranslationFilter"><property name="authenticationEntryPoint"><beanclass="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"><property name="loginFormUrl" value="/login.jsp" /></bean></property><property name="accessDeniedHandler"><beanclass="org.acegisecurity.ui.AccessDeniedHandlerImpl"><property name="errorPage" value="/accessDenied.jsp" /></bean></property></bean> <!-- Configure the map relation of the URL & Role --><bean id="filterInvocationInterceptor"class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"><property name="authenticationManager" ref="authenticationManager" /><property name="accessDecisionManager" ref="accessDecisionManager" /><property name="objectDefinitionSource"><value>CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISONPATTERN_TYPE_APACHE_ANT /protected/**=ROLE_HEAD_OF_ENGINEERING/**=IS_AUTHENTICATED_ANONYMOUSLY</value></property></bean><!-- Authentication manager --><bean id="authenticationManager"class="org.acegisecurity.providers.ProviderManager"><property name="providers"><list><ref local="daoAuthenticationProvider" /></list></property></bean> <!-- Access decision vote manager --><bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased"><property name="allowIfAllAbstainDecisions"value="false" /><property name="decisionVoters"><list><bean class="org.acegisecurity.vote.RoleVoter" /><bean class="org.acegisecurity.vote.AuthenticatedVoter" /></list></property></bean><!-- DAO authentication provider which get the user's information from database --><bean id="daoAuthenticationProvider"class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"><!--property name="userDetailsService" ref="userDetailsService" /--><property name="userDetailsService" ref="tuserDao" /><!-- UserCache property will activate the cache, it is not mandatory but increases performance by cacheing the user details retrieved from user-base --><property name="userCache" ref="userCache"/></bean><!-- Access user's username and password --><bean id="userDetailsService" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl"><property name="userProperties"><bean class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="location" value="/WEB-INF/users.properties" /></bean></property></bean><!-- Cache user's information --><bean id="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache"><property name="cache"><beanclass="org.springframework.cache.ehcache.EhCacheFactoryBean"><property name="cacheManager"><beanclass="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" /></property><property name="cacheName" value="userCache" /></bean></property></bean><!-- This bean is optional; it isn't used by any other bean as it only listens and logs --><bean id="loggerListener" class="org.acegisecurity.event.authentication.LoggerListener" /></beans>web根目录下登陆的JSP(login.jsp)的form片段:……<form name="loginForm" id="loginForm" action="<c:url value='/j_security_check'/>"> Username : alice <br />Password : 123 <br /> <li> <label>User Name</label> <input type="text" name="j_username" id="j_username" tabindex="1" /> </li><li><label>Password</label><input type="password" name="j_password" id="j_password" tabindex="2" /></li><li><input type="submit" name="login" value="Login" /></li></form>……web根目录下的logoutSuccess.jsp,与acegi匹配的页面,因为在配置文件中配置了的,所以必须也贴出来<html><head><title>Acegi sample application: Logout successfully </title></head><body><h2>Logout successfully !</h2><br /><a href="."> Go to Homepage </a><br /><a href="login.jsp"> Login to sample application </a></body></html>根目录下的protectedprotected1.jsp页面,与acegi匹配的页面,因为在配置文件中配置了的,所以必须也贴出来<html><head><title> Acegi sample application: Protected 1 </title></head><body><h2>PROTECTED RESOURCE 1 !</h2><br /><a href="protected2.jsp">View protected resource 2</a><br /><br /><a href="../j_acegi_logout">Logout</a></body></html>根目录下的protectedprotected2.jsp页面,与acegi匹配的页面,因为在配置文件中配置了的,所以必须也贴出来<html><head><title> Acegi sample application: Protected 2 </title></head><body><h2>PROTECTED RESOURCE 2 !</h2><br /><a href="protected1.jsp"> View protected resource 1 </a><br /><br /><a href="../j_acegi_logout"> Logout </a></body></html>楼主仔细看看配置文件啊,其它的都没什么的,配置文件的细微资源,如错误页面,跳转页面等根据自己的实际修改。主干不变就行了。我就只能帮到这个地方了

时间: 2024-08-31 08:01:25

请问struts1.2+spring2.0+hibernate3.2谁有一个能跑的简单程序的相关文章

Struts2.0 + Spring2.0 + Hibernate3.2编程新解!!!申请【精华贴】

问题描述 最近发现一款SSH代码生成的工具,介绍给大家,下面是我原文copy过来的,希望对大家有帮助,呵呵....AutoCode代码生成器(SSH版)[用于JAVA开发中的Struts2.0+Spring2.0+Hibernate3.2框架整合程序开发]强大的支撑功能,堪称JAVASSH编程的利器,你绝对值得拥有!自动生成以下所有内容(即:完整的JavaSSH支持的工程)Sturts2.0配置-->sturts.xml.struts.propertiesSpring2.0配置-->appli

Struts2.0+spring2.0+hibernate3.1 ACEGI应用示例(权限判断)

首先对先前的那个应用进行了完善,主要针对中文问题,查询后的记录的修改删除问题进行了完善.功能基本可以说已经比较完善了.尽管代码不是很好看. 这次添加了权限管理的功能,应用的是acegi来进行的权限管理.Acegi继承了spring的特点,无侵入性,利用aop来实现了权限管理. 权限管理主要形式是用户-角色-权限这种模式.因为是简单应用,我于是使用了用户-权限的模式,省去了角色,少了两张表.   users表   authorities表   user_auth表     在程序中相应的增加了对应

spring2.0问题

问题描述 各位大侠看下啊,刚配置好spring2.0+struts2.0+hibernate3.0程序发布后可以运行是可以保存查询数据,但我想在java里调式就出现了错误首先说下我的applicationContext.xml文件存放路径为WEB-INF文件夹下里面有配置了bean<beanid="sysRolesDAO"class="com.st.dao.iface.imp.SysRolesDAOImp"><propertyname="

Spring2.0中新的Bean类型实现原理

我们知道,在Spring2.0中,除了singleton及prototype两种类型的Bean以外.默认情况下还增加了request.session及global session三种类型的Bean,增加的三种类型的Bean主要应用于Web应用程序中.本文不打算分析三种类型的Bean的用法,只是简单分析框架的实现原理. Spring2.0中新增了一个用来表示Bean范围的Scope接口 public interface Scope { Object get(String name, ObjectF

MyEclipse搭建SSH框架 Struts2.1+Spring3.0+hibernate3.3

原文http://www.cnblogs.com/AXDY-QIN/archive/2013/01/21/SSH.html 用MyEclipse搭建SSH框架 Struts2.1+Spring3.0+hibernate3.3 1.         配置Tomcat 配置Tomcat所在路径 配置Tomcat使用JDK版本 如果Tomcat为7.0则添加Tomcat-juli.jar包 2.         new一个web project. 2.右键项目,为项目添加Struts支持.   点击F

注解-SSH struts1.2+spring2.5+hiberbate3.3

问题描述 SSH struts1.2+spring2.5+hiberbate3.3 注解配置 写个增删改查 案例 就是注解 不要弄配置文件的 发到我邮箱谢谢!fanwenkun1995@163.com

Spring3.0+Hibernate3.3 数据库访问出错。

问题描述 我使用Spring3.0+Hibernate3.3作为后台DAO访问数据库,其中我的dao都继承HibernateDaoSupport来的.然后我在jsp中调用publicvoidsave(ModuleDatiQuestiontransientInstance){log.debug("savingModuleDatiQuestioninstance");try{getHibernateTemplate().save(transientInstance);log.debug(&

请问那里支持.net2.0 和SQL Server 2005的空间便宜点?

问题描述 最近开发个网站想找点空间,请问那里支持.net2.0和SQLServer2005的空间便宜点?速度也要快点的 解决方案 解决方案二:这个还是找个好点空间商吧,主要是要稳定,便宜的怕上当啊,我是有感受的解决方案三:没有解决方案四:不是吧?都没人知道?

struts2+spring2.0+ibatis调用存储过程。

问题描述 我现在的做的项目是struts2+spring2.0+ibatis的,以前一直用Hibernate,对ibatis不熟.现在要频繁的调用一批存储过程.我有个问题,不理解.struts2+spring2.0+ibatis的系统,可以配置了既可以用ibatis又可以用jdbc吗我发觉jdbc调用存储过程比较简单,但是如果是在现有系统中不用spring的事务管理,自己在代码里写个链接jdbc的代码,很多存储过程要频繁打开,关闭连接,性能肯定不行.所以想问问,有什么方法,比如,ibatis直接