ssh框架初步搭载
来源:互联网 发布:南京联迪软件 编辑:程序博客网 时间:2024/04/30 18:52
1.导入jar包
2.创建web.xml文件,配置spring监听器和struts2的过滤器
<!-- Spring框架使用监听器,服务器启动的时候加载Spring的配置文件 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 监听器默认加载WEB-INF/application.xml --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
<!-- Struts2使用核心过滤器 --> <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>
3.配置db.properties文件加载数据库的基本配置
jdbcUrl=jdbc:mysql://localhost:3306/myshop?useUnicode=true&characterEncoding=utf8driverClass=com.mysql.jdbc.Driveruser=rootpassword=rootinitialPoolSize=10maxPoolSize=30
4.applicationContext的配置
(一)
<!-- 导入外部的properties配置文件 --> <context:property-placeholder location="classpath:db.properties" />
(二)
<!-- 配置c3p0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="driverClass" value="${driverClass}"></property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize" value="${initialPoolSize}"></property> <!--连接池中保留的最小连接数。Default: 3 --> <property name="minPoolSize" value="3"></property> <!--连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize" value="${maxPoolSize}"></property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement" value="3"></property> <!--最大空闲时间,1800秒内未使用则连接被丢弃,若为0则永不丢弃。Default: 0 --> <property name="maxIdleTime" value="1800"></property> </bean>
(三)sessionFactory的配置
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--配置数据库属性 --> <property name="dataSource" ref="dataSource"></property> <!--配置hibernate属性 --> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="javax.persistence.validation.mode">none</prop> </props> </property> <property name="mappingLocations"> <list> <value>classpath:cn/itcast/shop/*/entity/*.hbm.xml</value> </list> </property> </bean>
(四) 事务的配置
两种方式:
①
<!-- 事务管理 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean><!-- 事务通知 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="find*" read-only="true"/> <tx:method name="get*" read-only="true"/> <tx:method name="list*" read-only="true"/> <tx:method name="*" rollback-for="Throwable"/> </tx:attributes> </tx:advice><!-- aop配置被事务控制的类 --> <aop:config> <aop:pointcut id="serviceOperation" expression="bean(*Service)"/> <!-- 扫描以Service结尾的bean --><!-- <aop:pointcut id="serviceOperation" expression="execution(* cn.itcast..service.impl.*.*(..))"/> --><!--处理事务的类具体落实到service路径的配置 -- > <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/> </aop:config>
②在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
<!-- 声明式事务管理 --> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <!-- 注入 sessionFactory--> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
(五)创建bean
<bean id="baseDao" abstract="true"> <property name="sessionFactory" ref="sessionFactory"></property> </bean><!-- 引入外部sprign配置文件 --> <import resource="classpath:cn/itcast/shop/*/conf/*-spring.xml"/>
5.创建项目中总struts2配置文件
<!-- 禁用动态方法访问 --> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <!-- 配置成开发模式 --> <constant name="struts.devMode" value="true" /> <!-- 配置拓展名为action --> <constant name="struts.action.extention" value="action" /> <!-- 把主题配置成simple --> <constant name="struts.ui.theme" value="simple" />
再次将子配置文件添加进来
<!-- 包含struts配置文件 --> <include file="cn/itcast/shop/index/conf/index-struts.xml"></include>
6.创建实体类entity包下的user类
public class User implements Serializable{ private Integer uid ; private String username; private String password; private String name; private String email; private String phone; private String addr; private String sex; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } 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 getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
7.创建entity下的User.hbm.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="cn.itcast.shop.user.entity.User" table="user"> <!-- 配置唯一标识 --> <id name="uid" column="uid"> <generator class="native"/> </id> <!-- 配置普通属性 --> <property name="username" column="username"/> <property name="password" column="password"/> <property name="name" column="name"/> <property name="email" column="email"/> <property name="phone" column="phone"/> <property name="addr" column="addr"/> <property name="sex" column="sex"/> </class></hibernate-mapping>
8.抽取以BaseDao和BaseService为名的核心代码
①BaseDao
public interface BaseDao<T> { //新增 public void save(T entity); //更新 public void update(T entity); //根据id删除 public void deleteById(Serializable id); //根据id查找 public T findObjectById(Serializable id); //查找列表 public List<T> findObjects();}
②BaseDaoImpl
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { Class<T> clazz; public BaseDaoImpl(){ ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass(); clazz = (Class<T>)pt.getActualTypeArguments()[0]; } @Override public void save(T entity) { // TODO Auto-generated method stub getHibernateTemplate().save(entity); } @Override public void update(T entity) { // TODO Auto-generated method stub getHibernateTemplate().update(entity); } @Override public void deleteById(Serializable id) { // TODO Auto-generated method stub getHibernateTemplate().delete(findObjectById(id)); } @Override public T findObjectById(Serializable id) { // TODO Auto-generated method stub return getHibernateTemplate().get(clazz, id); } @Override public List<T> findObjects() { // TODO Auto-generated method stub Query query = getSession().createQuery("FROM "+clazz.getSimpleName()); return query.list(); }}
③BaseService
public interface BaseService<T> { //新增 public void save(T entity); //更新 public void update(T entity); //根据id删除 public void deleteById(Serializable id); //根据id查找 public T findObjectById(Serializable id); //查找列表 public List<T> findObjects();}
④BaseServiceImpl
public class BaseServiceImpl<T> implements BaseService<T> { private BaseDao<T> baseDao; public void setBaseDao(BaseDao<T> baseDao) { this.baseDao = baseDao; } @Override public void save(T entity) { // TODO Auto-generated method stub baseDao.save(entity); } @Override public void update(T entity) { // TODO Auto-generated method stub baseDao.update(entity); } @Override public void deleteById(Serializable id) { // TODO Auto-generated method stub baseDao.deleteById(id); } @Override public T findObjectById(Serializable id) { // TODO Auto-generated method stub return baseDao.findObjectById(id); } @Override public List<T> findObjects() { // TODO Auto-generated method stub return baseDao.findObjects(); }}
9.使用具体的业务代码继承上述的核心代码
①UserDao
public interface UserDao extends BaseDao<User> { public User findUserByAccountAndPassword(String username, String password);}
②UserDaoImpl
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao {}
③UserService
public interface UserService extends BaseService<User>{}
④UserSericeImpl
@Service("userService")public class UserServiceImpl extends BaseServiceImpl<User> implements UserService { private UserDao userDao ; @Resource public void setUserDao(UserDao userDao) { super.setBaseDao(userDao); this.userDao = userDao; }}
10.编写action代码
public class UserAction extends ActionSupport { @Resource private UserService userService ; private User user ; //跳转到注册页面 public String registerPage(){ return "registerPageSuccess"; } //实行注册功能 public String register(){ userService.save(user); return "registerSuccess"; } //跳转到登陆页面 public String loginPage(){ return "loginPageSuccess"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}
11.配置子配置文件user-struts和user-spring文件
①user-struts
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="user-action" namespace="/user" extends="struts-default"> <action name="user_*" class="userAction" method="{1}"> <result name="registerPageSuccess">/WEB-INF/jsp/user/register.jsp</result> <result name="registerSuccess">>/WEB-INF/jsp/index/success.jsp</result> </action> </package></struts>
@user-spring文件
<?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:p="http://www.springframework.org/schema/p" 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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="userAction" class="cn.itcast.shop.user.action.UserAction"></bean> <bean id="userDao" class="cn.itcast.shop.user.dao.impl.UserDaoImpl" parent="baseDao"></bean> <!-- 扫描service --> <context:component-scan base-package="cn.itcast.shop.user.service.impl"></context:component-scan></beans>
最最后———————————————-
配置文件的注解和xml配置的区分:
注解:
<!-- 扫描service --> <context:component-scan base-package="cn.itcast.shop.user.service.impl"></context:component-scan>
那么就无需在xml 文件中创建bean,只需在service类上注入就行
@Service("userService") public class UserServiceImpl extends BaseServiceImpl<User> implements UserService { }
同时用@Resource进行属性的装配
@Resource private UserDao userDao ;
xml配置:
<!-- 配置Dao================================== --> <bean id="userDao" class="cn.itcast.shop.user.UserDao"> <property name="sessionFactory" ref="sessionFactory"/> </bean><!-- 配置Service================================== --> <bean id="userService" class="cn.itcast.shop.user.UserService"> <property name="userDao" ref="userDao"/> </bean><!-- 配置Action================================== --> <bean id="userAction" class="cn.itcast.shop.user.UserAction" scope="prototype"> <property name="userService" ref="userService"/> </bean>
那么在实际代码中需
// 注入Dao private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; }
0 0
- ssh框架初步搭载
- SSH框架的初步搭建
- SSH框架初步和测试(1)
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- 使用MyEclipse整合ssh(Struts、Spring、Hibernate)三大框架(环境搭载+实例源码下载)
- 使用ssh隧道搭载vnc
- 黑马程序员--Java初步了解、环境搭载
- [java] ssh框架初步搭建过程,很简单的
- 搭载一个简单的servlet框架
- AngularJs+bootstrap搭载前台框架1
- AngularJs+bootstrap搭载前台框架2
- AngularJs+bootstrap搭载前台框架3
- Android Sutdio下搭载ButterKnife框架
- Python Luigi框架的搭载和运行
- 搭载Hibernate框架以及入门程序
- ssh整合 初步
- 关于空值null的排序问题 mysql 和oracle
- [Android] Gallery选中变大效果的实现
- PAT 1115. Counting Nodes in a BST (30)
- ssm整理
- Matlab R2012a和vs 2010混合编程
- ssh框架初步搭载
- 关于修改 标签input file 样式问题!
- Java Date 比较
- 从UDP的”连接性”说起–告知你不为人知的UDP
- 小编教你怎样重装系统win7
- Java线程池的设计与实现
- 留着
- 有限状态机
- Winform技术要点及案例项目开发小结