zoukankan      html  css  js  c++  java
  • Struts 2 + Spring + Hibernate 开发流程

    Struts 2 开发流程

    第 1 步 在web.xml中定义核心Filter来拦截用户请求

    <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>
    

    第 2 步 如果需要以POST方式提交请求,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求,则无须经过这一步

    第 3 步 定义处理用户请求的Action类

    public class LoginAction extends ActionSupport {
        private String username;
        private String password;
        private String tip;
        
        /* getter & setter */
        
        @Override
        public String execute() {
            ActionContext ctx = ActionContext.getContext();
            Integer counter = (Integer) ctx.getApplication().get("counter");
            if (counter == null) counter = 1;
            else counter = counter + 1;
            
            ctx.getApplication().put("counter", counter);
            ctx.getSession().put("user", getUsername());
            if (getUsername().equals("Tom") && getPassword().equals("123456")) {
                ctx.put("tip", "登录成功");
                return SUCCESS;
            } else {
                ctx.put("tip", "登录失败");
                return ERROR;
            }
        }
    }
    

    第 4 步 在struts.xml中配置Action

    <package name="some" extends="struts-default">
        <action name="login" class="com.duan.action.LoginAction">
            <result name="success">/welcome.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
    

    第 5 步 在struts.xml中配置处理结果和物理视图资源之间的对应关系

    同上
    

    第 6 步 编写视图资源

    welcome.jsp

    <html>
        <head></head>
        <body>
            本站访问次数为:${applicationScope.counter} <br/>
            ${sessionScope.user},您已经登录! <br/>
            ${requestScope.tip} <br/>
        </body>
    </html>
    



    Hibernate 开发流程

    第 0 步 配置文件

    hibernate.cfg.xml

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
            <property name="connection.username">root</property>
            <property name="connection.password">123456</property>
            <property name="show_sql">true</property>
            
            <property name="hibernate.c3p0.max_size">20</property>
            <property name="hibernate.c3p0.min_size">1</property>
            <property name="hibernate.c3p0.timeout">5000</property>
            <property name="hibermate.c3p0.max_statements">100</property>
            <property name="hibernate.c3p0.idle_test_period">3000</property>
            <property name="hibernate.c3p0.acquire_increment">2</property>
            <property name="hibernate.c3p0.validate">true</property>
            
            <mapping class="com.duan.entity.User"/>
               
        </session-factory>
    
    </hibernate-configuration>
    

    第 1 步 开发持久化类

    User.java

    @Entity
    @Table( name = "user")
    public class User {
        @Id
        @GeneratedValue
        private long id;
        private String username;
        private String password;
        
        public User() {}
        
        public User(String name, String pass) {
            username = name;
            password = pass;
        }
        
        /* getter & setter */
    }
    

    第 2 步 注册服务

    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
    			.configure() // configures settings from hibernate.cfg.xml
    			.build();
    

    第 3 步 获取SessionFactory

    sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
    

    第 4 步 获取Session,打开事务

    Session session = sessionFactory.openSession();
    session.beginTransaction();
    

    第 5 步 用面向对象的方式操作数据库

    session.save(new User("Tom", "123456"));
    

    第 6 步 关闭事务,关闭Session

    session.getTransaction().commit();
    session.close();
    



    Spring整合Struts 2

    第 1 步 启动Spring容器

    <listener>
    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    

    第 2 步 让Spring管理控制器

    LoginAction.java

    public class LoginAction extends ActionSupport {
        ...
    	
        private ConsumerService service;
    	
        public void setService(ConsumerService service) {
            this.service = service;
        }
    	
        ...
    }
    

    struts.xml

    <action name="login" class="loginAction">
        ...
    </action>
    

    applicationContext.xml

    <bean id="service" class="com.duan.service.impl.ConsumerServiceImpl"/>
    
    <bean id="loginAction" class="com.duan.action.LoginAction" scope="prototype">
        <property name="service" ref="service"/>
    </bean>
    



    Spring整合Hibernate

    第 1 步 管理SessionFactory

    <!-- 定义数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
        <property name="user" value="duan"/>
        <property name="password" value="123456"/>
        <property name="maxPoolSize" value="40"/>
        <property name="minPoolSize" value="1"/>
        <property name="initialPoolSize" value="1"/>
        <property name="maxIdleTime" value="20"/>
    </bean>
    
    <!-- 定义SessionFactory-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    </bean>
    

    第 2 步 继承自HibernateDaoSupport的DaoImpl类

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
    
        @Override
        public User update(User user) {
            getHibernateTemplate().update(user);
        }
    	
        ...
    }
    

    第 3 步 装配到应用上下文中

    <bean id="userDao" class="com.duan.dao.impl.UserDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    

    第 4 步 用Spring管理事务

    <!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    
    <!-- 注解驱动事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    

    UserServiceImpl.java

    @Transactional(propagation=Propagation.SUPPORTS)
    @Reposity
    public class UserServiceImpl implements UserService {
        
        private UserDao userDao;
    	
        @Transactional(propagation=Propagation.REQUIRED)
        @Override
        public void modify(User user) {
            userDao.update(user);
        }
    	
        ...
    }
  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/hippiebaby/p/5462039.html
Copyright © 2011-2022 走看看