注解方式实现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>
- 注解方式实现SSH整合
- SSH框架整合---注解的方式
- 基于MyEclipse8.5注解方式整合SSH框架
- ssh整合webservice cxf采用注解的方式+andriod客户端
- SSH整合时,基于注解的事务管理的配置方式
- 注解方式实现ssh框架搭建
- SSH整合加注解
- 全注解整合ssh
- SSH整合(注解版)
- SSH整合 注解
- SSH整合之注解整合
- SSH-使用注解整合实现简单的登录功能
- SSH注解方式
- SSH注解方式开发
- ssh 整合方式总结
- 关于SSH三大框架整合——配置文件方式、配置文件+注解方式
- ssh全注解框架整合
- 使用注解写SSH整合
- 从关系型数据库到非关系型数据库
- 【Android】Android 4.2源码下载(ubuntu 12.10)
- [小代码]获得系统SDK的详细信息
- alter index rebuild online引发的血案
- wpf:combobox绑定数据库
- 注解方式实现SSH整合
- setitimer
- C++学习笔记_2:单一继承时的构造函数与析构函数
- shell telnet进入发命令并退出
- 32位xp下Android studio安装好启动没反应解决方法
- 云计算相关基础概念
- 第四届蓝桥杯JAVA本科B(世纪末的星期)
- 对智能手机的见解
- 同余方程组问题