- 浏览: 21224 次
- 性别:
最新评论
注解方式实现SSH整合
之前有写过基于xml配置文件的SSH整合,但是经过一段时间的项目实践,发现配置文件的方式太过繁琐了,所以就尝试了使用注解的方式,果然没了庞大的配置文件,看起来就是舒服
下面是我使用注解重构之前项目的一个模块:
1、代码结构:
2、model:
package org.ytz.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "t_fefreshthing", catalog = "course")
public class TRefreshThing implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String title;
private String type;
private String writter;
private String content;
private Date addTime;
public TRefreshThing() {
}
public TRefreshThing(Integer id,String title, String type,String writter,String content, Date addTime) {
super();
this.id = id;
this.title = title;
this.type=type;
this.writter=writter;
this.content = content;
this.addTime = addTime;
}
public TRefreshThing(Integer noteId) {
this.id=noteId;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "content", length = 65535)
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
@Column(name = "title", length = 40)
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name = "type", length = 10)
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Column(name = "writter")
public String getWritter() {
return writter;
}
public void setWritter(String writter) {
this.writter = writter;
}
@Temporal(TemporalType.DATE)
@Column(name = "add_time", length = 10)
public Date getAddTime() {
return this.addTime;
}
public void setAddTime(Date addTime) {
this.addTime = addTime;
}
}
3、dao
package org.ytz.dao;
import java.util.List;
import org.ytz.model.TRefreshThing;
public interface RefreshThingDao {
public boolean isExist(int id);
public void save(TRefreshThing refreshThing);
public void update(TRefreshThing refreshThing);
public void delete(TRefreshThing refreshThing);
public TRefreshThing getrefreshThing(int id);
public List<TRefreshThing> getrefreshThings(int pageSize, int startRow);
public List<TRefreshThing> findbywritter(String writter);
}
4、daoimpl:
package org.ytz.dao.impl;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Component;
import org.ytz.dao.RefreshThingDao;
import org.ytz.model.TRefreshThing;
@Component
public class RefreshThingDaoImpl implements RefreshThingDao {
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
@Resource(name = "hibernateTemplate")
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
@Override
public boolean isExist(int id) {
@SuppressWarnings("unchecked")
List<TRefreshThing> refreshThings = hibernateTemplate
.find("from TRefreshThing as refreshThing");
if (refreshThings != null && refreshThings.size() > 0) {
return true;
} else {
return false;
}
}
@Override
public void save(TRefreshThing refreshThing) {
hibernateTemplate.save(refreshThing);
}
@Override
public void update(TRefreshThing refreshThing) {
hibernateTemplate.update(refreshThing);
}
@Override
public void delete(TRefreshThing refreshThing) {
hibernateTemplate.delete(refreshThing);
}
@Override
public TRefreshThing getrefreshThing(int id) {
return (TRefreshThing) hibernateTemplate.load(TRefreshThing.class, id);
}
@SuppressWarnings("unchecked")
@Override
public List<TRefreshThing> getrefreshThings(int pageSize, int startRow) {
final int _pageSize = pageSize;
final int _startRow = startRow;
return hibernateTemplate.executeFind(new HibernateCallback() {
public List<TRefreshThing> doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session
.createQuery("from TRefreshThing as refreshThing order by refreshThing.id desc");
query.setFirstResult(_startRow);
query.setMaxResults(_pageSize);
query.setCacheable(true);
return query.list();
}
});
}
@SuppressWarnings("unchecked")
@Override
public List<TRefreshThing> findbywritter(String writter) {
// TODO Auto-generated method stub
return hibernateTemplate.find("from TRefreshThing as refreshThing where refreshThing.writter='"+ writter+"'");
//return null;
}
}
5、service
package org.ytz.service;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.ytz.dao.RefreshThingDao;
import org.ytz.model.TRefreshThing;
@Component
public class RefreshThingService {
private RefreshThingDao refreshThingDao;
public void save(TRefreshThing refreshThing){
this.refreshThingDao.save(refreshThing);
}
public void update(TRefreshThing refreshThing){
System.out.println(refreshThing.getId());
TRefreshThing temp = this.getrefreshThing(refreshThing.getId());
temp.setContent(refreshThing.getContent());
temp.setAddTime(new Date());
temp.setTitle(refreshThing.getTitle());
refreshThingDao.update(temp);
}
public List<TRefreshThing> getrefreshThings(int pageSize, int startRow) {
return refreshThingDao.getrefreshThings(pageSize, startRow);
}
public TRefreshThing getrefreshThing(int id){
return this.refreshThingDao.getrefreshThing(id);
}
public void deleterefreshThing(TRefreshThing refreshThing){
refreshThingDao.delete(refreshThing);
}
public List<TRefreshThing> findbywritter(String writter) {
return refreshThingDao.findbywritter(writter);
}
public RefreshThingDao getrefreshThingDao() {
return refreshThingDao;
}
@Resource
public void setrefreshThingDao(RefreshThingDao refreshThingDao) {
this.refreshThingDao = refreshThingDao;
}
}
6、dto
package org.ytz.dto;
import java.util.Date;
import org.ytz.model.TRefreshThing;
public class TRefreshThingAuthorization {
private String content;
public TRefreshThing getRefreshThing(){
TRefreshThing refreshThing=new TRefreshThing();
//refreshThing.setWritter(writter);
refreshThing.setContent(content);
refreshThing.setAddTime(new Date());
return refreshThing;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
7、action:
package org.ytz.action;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.ytz.dto.TRefreshThingAuthorization;
import org.ytz.model.TRefreshThing;
import org.ytz.service.RefreshThingService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
@Component(value = "refreshThingAction")
@Scope("prototype")
public class RefreshThingAction extends ActionSupport implements SessionAware, ModelDriven<TRefreshThingAuthorization> {
private static final long serialVersionUID = 1L;
private TRefreshThingAuthorization refreshThing = new TRefreshThingAuthorization();
private RefreshThingService refreshThingService;
private Map<String, Object> session;
private String refreshThing_result = "";
private int startRow;
private String writter;
public String add() {
//refreshThing.setAddTime(new Date());
TRefreshThing trefreshThing=refreshThing.getRefreshThing();
trefreshThing.setWritter((String) session.get("realname"));
refreshThingService.save(trefreshThing);
refreshThing_result = "/student/success.jsp";
return "add";
}
public String find(){
session.put("newslist", refreshThingService.getrefreshThings(15, 0));
refreshThing_result = "/student/newsall.jsp";
return "find";
}
public String findbywritter(){
//session.remove("newslist");
session.put("newslistwritter", refreshThingService.findbywritter(writter));
refreshThing_result = "/student/newsall_writter.jsp";
return "findbywritter";
}
public String update(){
//refreshThingService.update(refreshThing);
refreshThing_result = "/student/success.jsp";
return"update";
}
public String delete(){
//refreshThingService.deleterefreshThing(refreshThing);
refreshThing_result = "/student/success.jsp";
return "delete";
}
public RefreshThingService getNoteService() {
return refreshThingService;
}
public List<TRefreshThing> check(){
return null;
}
@Override
public TRefreshThingAuthorization getModel() {
return this.refreshThing;
}
public TRefreshThingAuthorization getRefreshThing() {
return refreshThing;
}
public void setRefreshThing(TRefreshThingAuthorization refreshThing) {
this.refreshThing = refreshThing;
}
public RefreshThingService getRefreshThingService() {
return refreshThingService;
}
@Resource
public void setRefreshThingService(RefreshThingService refreshThingService) {
this.refreshThingService = refreshThingService;
}
public String getRefreshThing_result() {
return refreshThing_result;
}
public void setRefreshThing_result(String refreshThing_result) {
this.refreshThing_result = refreshThing_result;
}
public int getStartRow() {
return startRow;
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.session=arg0;
}
public String getWritter() {
return writter;
}
public void setWritter(String writter) {
this.writter = writter;
}
}
8、struts配置:(使用通配符)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="authorityRefreshthing" namespace="/refreshthing" extends="configuration">
<action name="refreshthing_*" class="refreshThingAction" method="{1}" >
<result name="{1}">${refreshThing_result}</result>
</action>
</package>
</struts>
9、Spring:beans.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:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config />
<context:component-scan base-package="org.ytz" />
<!--修改数据库 : 其一 jdbc2.properties -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!--其二: dialect -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>org.ytz.model</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="connection.pool_size">1</prop>
<prop key="hbm2ddl.auto">update</prop>
<prop key="current_session_context_class">thread</prop>
</props>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<aop:config>
<aop:pointcut id="bussinessService"
expression="execution(public * org.ytz.service..*.*(..))" />
<aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="chaPass*" propagation="REQUIRED" read-only="false"/>
<tx:method name="add*" propagation="REQUIRED" read-only="false"/>
<tx:method name="save*" propagation="REQUIRED" read-only="false"/>
<tx:method name="update*" propagation="REQUIRED" read-only="false"/>
<tx:method name="delete*" read-only="false" />
<tx:method name="isExist" read-only="true" />
<tx:method name="getAll*" read-only="true" />
<tx:method name="get*" read-only="true" />
<tx:method name="shareNote*" read-only="false" />
<tx:method name="cancel*" read-only="false"/>
</tx:attributes>
</tx:advice>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
10、web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>permission</filter-name>
<filter-class>org.ytz.utils.UserPermissionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>permission</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>404</error-code>
<location>/index.jsp</location>
</error-page>
<!-- http://blog.csdn.net/lifuxiangcaohui/article/details/7006895 session 配置 -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
相关推荐
适合ssh初学者,分享促进进步
SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创) 包含所需的lib
注解方式整合ssh,希望对大家有帮助,代码很好
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),演示搭建项目架构原型。 项目架构原型:Struts2.3.16+Spring4.1.1+Hibernate4.3.6。 此外,还有:log4j、slf4j、ehcache等知识点。 参考文档:...
基于注解方式的ssh整合代码
注解的ssh整合,包括了注解的形式整合了ssh
ssh整合demo 整合, structs 附带了多个测试页面可以跳转,写了一个简单action,structs.xml 使用了模糊匹配, spring 注释方式 注入依赖,xml方式实现aop,hibernate 配置好数据库,可自动生成表,标准的model ,dao...
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
是个非常非常不错的SSH项目,里面有丰富的注解,
SSH整合(注解方式)dataSource配置defaultAutoCommit启动报错,解决办法
SSH整合模板,利用注解实现配置。该模板比较常用,利用价值大
ssh2全注解方式整合demo
Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13全注解整合(SSH全注解整合)Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13全注解整合(SSH全注解整合)Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13全注解整合(SSH全注解...
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
Maven整合SSH案例 ************************************************************************************* 注意:运行前请配置Maven环境,和修改config.properties中数据库名称用户和密码,并且修改Tuser中的...
SSH整合Ajax实现注册验证 代码清晰直观 每步都有注释
Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13半注解整合(SSH半注解整合)Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13半注解整合(SSH半注解整合)Spring5.0.3 + Hibernate5.0.7 + Struts2.5.13半注解整合(SSH半注解...
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习