注解方式实现SSH整合

来源:互联网 发布:java潜艇大战 编辑:程序博客网 时间:2024/05/18 00:06


之前有写过基于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;@Componentpublic class RefreshThingDaoImpl implements RefreshThingDao {private HibernateTemplate hibernateTemplate;public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}@Resource(name = "hibernateTemplate")public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}@Overridepublic 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;}}@Overridepublic void save(TRefreshThing refreshThing) {hibernateTemplate.save(refreshThing);}@Overridepublic void update(TRefreshThing refreshThing) {hibernateTemplate.update(refreshThing);}@Overridepublic void delete(TRefreshThing refreshThing) {hibernateTemplate.delete(refreshThing);}@Overridepublic TRefreshThing getrefreshThing(int id) {return (TRefreshThing) hibernateTemplate.load(TRefreshThing.class, id);}@SuppressWarnings("unchecked")@Overridepublic 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")@Overridepublic List<TRefreshThing> findbywritter(String writter) {// TODO Auto-generated method stubreturn 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;@Componentpublic 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;}@Resourcepublic 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;}@Overridepublic TRefreshThingAuthorization getModel() {return this.refreshThing;}public TRefreshThingAuthorization getRefreshThing() {return refreshThing;}public void setRefreshThing(TRefreshThingAuthorization refreshThing) {this.refreshThing = refreshThing;}public RefreshThingService getRefreshThingService() {return refreshThingService;}@Resourcepublic 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;}@Overridepublic void setSession(Map<String, Object> arg0) {// TODO Auto-generated method stubthis.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 --><beanclass="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>


 


 

原创粉丝点击