2019独角兽企业重金招聘Python工程师标准>>>
<p>三大框架的整合,直接的上手:</p> <h2>一、新建立一个web项目,在项目中进行我们的导包的操作:</h2> <p>struts2.2的基本的包(13个):</p> <blockquote> <p>asm-3.3.jar <br />asm-commons-3.3.jar <br />asm-tree-3.3.jar <br />commons-fileupload-1.3.jar <br />commons-io-2.0.1.jar <br />commons-lang3-3.1.jar <br />commons-logging-1.1.3.jar <br />freemarker-2.3.19.jar <br />javassist-3.11.0.GA.jar <br />log4j-1.2.17.jar <br />ognl-3.0.6.jar <br />struts2-core-2.3.15.1.jar <br />xwork-core-2.3.15.1.jar</p> </blockquote> <p>spring2.5的基本的包(5个):</p> <blockquote> <p>aspectjrt.jar <br />aspectjweaver.jar <br />cglib-nodep-2.1_3.jar <br />commons-logging.jar <br />spring.jar</p> </blockquote> <p>hibernate3.2的基本的包(15个):</p> <blockquote> <p>antlr-2.7.6.jar <br /><u>asm-attrs.jar</u> <br />asm.jar</p> <p>aspectjrt.jar(切面) <br />aspectjweaver.jar(切面)</p> <p> <br />cglib-2.1.3.jar <br />commons-collections-2.1.1.jar <br />commons-logging-1.0.4.jar <br />dom4j-1.6.1.jar <br />ehcache-1.2.jar <br />ejb3-persistence.jar <br />hibernate-annotations.jar <br />hibernate-commons-annotations.jar <br />hibernate3.jar <br />jta.jar</p> </blockquote> <p>数据库mysql的连接包(1个):</p> <blockquote> <p> <br />mysql-connector-java-3.1.10-bin.jar</p> </blockquote> <p>谷歌的gson类和json的转换包(1个):</p> <blockquote> <p>gson-2.2.4.jar</p> </blockquote> <h2>下面是我自己导入的30个包</h2> <p>:(</p> <blockquote> <p>antlr-2.7.6.jar <br />asm-attrs.jar <br />asm.jar <br />aspectjrt.jar <br />aspectjweaver.jar <br />cglib-2.1.3.jar <br />cglib-nodep-2.1_3.jar <br />commons-collections-2.1.1.jar <br />commons-dbcp.jar <br />commons-fileupload-1.2.1.jar <br />commons-io-1.3.2.jar <br />commons-logging-1.0.4.jar <br />commons-logging.jar <br />commons-pool.jar <br />dom4j-1.6.1.jar <br />ehcache-1.2.jar <br />ejb3-persistence.jar <br />freemarker-2.3.16.jar <br />gson-2.2.4.jar <br />hibernate-annotations.jar <br />hibernate-commons-annotations.jar <br />hibernate3.jar <br />javassist-3.7.ga.jar <br />jta.jar <br />mysql-connector-java-5.1.13.jar <br />ognl-3.0.jar <br />spring.jar <br />struts2-core-2.2.1.1.jar <br />struts2-spring-plugin-2.2.1.1.jar <br />xwork-core-2.2.1.1.jar</p> </blockquote> <p>)</p> <h2>接下来是一个快乐的配置文件了:</h2> <p>web.xml中间配置的是我们的struts的过滤和spring的IoC的容器的放置的操作,如下的:</p> <h3>web.xml</h3> <blockquote> <p><?xml version="1.0" encoding="UTF-8"?> <br /><web-app version="3.0" xmlns="<a href="http://java.sun.com/xml/ns/javaee"">http://java.sun.com/xml/ns/javaee"</a> <br />    xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"">http://www.w3.org/2001/XMLSchema-instance"</a> <br />    xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <br />    <a href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"</a>> <br />    <display-name></display-name></p> <p>    <!-- spring配置文件的读取的配置 --> <br />    <context-param> <br />        <param-name>contextConfigLocation</param-name> <br />        <param-value>classpath*:applicationContext*.xml</param-value> <br />    </context-param></p> <p>    <!-- spring的配置到我们的web容器中去 --> <br />    <listener> <br />        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <br />    </listener></p> <p>    <!-- struts2的配置 --> <br />    <filter> <br />        <filter-name>struts2</filter-name> <br />        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <br />    </filter></p> <p>    <filter-mapping> <br />        <filter-name>struts2</filter-name> <br />        <url-pattern>/*</url-pattern> <br />    </filter-mapping></p> <p>    <!-- 首页的显示 --> <br />    <welcome-file-list> <br />        <welcome-file>index.jsp</welcome-file> <br />    </welcome-file-list> <br />    <br />    <br /></web-app> <br /></p> </blockquote> <p>struts.xml中的配置是对于struts的action的配置,需要注意的是,接下来的操作中,我们的action是由spring进行代理操作生成的,那么其中的action对于的class的属性就需要做一个相应的转变了:</p> <h3>struts.xml</h3> <blockquote> <p><?xml version="1.0" encoding="UTF-8" ?> <br /><!DOCTYPE struts PUBLIC <br />    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" <br />    "<a href="http://struts.apache.org/dtds/struts-2.0.dtd"">http://struts.apache.org/dtds/struts-2.0.dtd"</a>></p> <p><struts> <br />    <!-- 指定struts2的objectFactorybean,该属性的值是spring,意思是由spring进行的基本的操作的 --> <br />    <constant name="struts.objectFactory" value="spring" ></constant>    </p> <p> <br />    <package name="default" namespace="/" extends="struts-default"> <br />        <action name="userAction"  class="userAction"  ></action> <br />    </package></p> <p></struts> <br /></p> </blockquote> <p>applicationContext.xml的配置是我们的配置中最繁琐的一个文件,其中的配置信息:</p> <h3>applicationContext.xml:</h3> <blockquote> <p><?xml version="1.0" encoding="UTF-8"?> <br /><beans xmlns="<a href="http://www.springframework.org/schema/beans"">http://www.springframework.org/schema/beans"</a> <br />    xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"">http://www.w3.org/2001/XMLSchema-instance"</a> xmlns:aop="<a href="http://www.springframework.org/schema/aop"">http://www.springframework.org/schema/aop"</a> <br />    xmlns:context="<a href="http://www.springframework.org/schema/context"">http://www.springframework.org/schema/context"</a> <br />    xsi:schemaLocation=" <br /><a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a> <br /><a href="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</a> <br /><a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a> <br /><a href="http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">http://www.springframework.org/schema/aop/spring-aop-2.5.xsd</a> <br /><a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>   <br /><a href="http://www.springframework.org/schema/context/spring-context-2.5.xsd">http://www.springframework.org/schema/context/spring-context-2.5.xsd</a> <br />"> <br />    <!-- spring自动的实现浏览的设置 --> <br />    <context:component-scan base-package="com.fww"></context:component-scan></p> <p>    <!-- 使用spring的注解的方式 --> <br />    <aop:aspectj-autoproxy /></p> <p>    <!-- 数据库的连接池的配置 需要使用到数据库连接池的类 --> <br />    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <br />        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <br />        <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <br />        <property name="username" value="root"></property> <br />        <property name="password" value="sa"></property> <br />        <property name="maxActive" value="20"></property> <br />    </bean></p> <p>    <!-- 关于hibernate的基本的配置的操作也是在这里实现 --> <br />    <bean id="sessionFactory" <br />        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></p> <p>        <!-- hibernate的全局的配置 --> <br />        <property name="hibernateProperties"> <br />            <props> <br />                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect <br />                </prop> <br />                <prop key="hibernate.hbm2ddl.auto">update</prop> <br />                <prop key="hibernate.show_sql">true</prop> <br />                <prop key="hibernate.format_sql">true</prop> <br />            </props> <br />        </property></p> <p> <br />        <!-- 数据库的连接池的配置需要使用上述中的声明的数据库池的配置 --> <br />        <property name="dataSource" ref="dataSource"></property></p> <p> </p> <p> <br />        <!-- 使用xml进行的hibernate的配置 --> <br />        <property name="mappingResources"> <br />            <list> <br />                <value>com/fww/po/User.hbm.xml</value> <br />                <value>com/fww/po/Stu.hbm.xml</value> <br />            </list> <br />        </property></p> <p>    </bean> <br /></beans></p> </blockquote> <h3>基本的javabean的类:</h3> <p>User和Stu类,以及其对于的hbm.xml:</p> <p>user:</p> <blockquote> <p>package com.fww.po;</p> <p>public class User {</p> <p>    private Integer id; <br />    <br />    private String name; <br />    <br />    private String pwd;</p> <p>    public User() { <br />        super(); <br />        // TODO Auto-generated constructor stub <br />    }</p> <p>    public User(Integer id, String name, String pwd) { <br />        super(); <br />        this.id = id; <br />        this.name = name; <br />        this.pwd = pwd; <br />    }</p> <p>    public Integer getId() { <br />        return id; <br />    }</p> <p>    public void setId(Integer id) { <br />        this.id = id; <br />    }</p> <p>    public String getName() { <br />        return name; <br />    }</p> <p>    public void setName(String name) { <br />        this.name = name; <br />    }</p> <p>    public String getPwd() { <br />        return pwd; <br />    }</p> <p>    public void setPwd(String pwd) { <br />        this.pwd = pwd; <br />    } <br />    <br />} <br /></p> </blockquote> <h3>user.hbm.xml:</h3> <blockquote> <p><?xml version="1.0"?> <br /><!DOCTYPE hibernate-mapping PUBLIC <br />    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" <br />    "<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"</a>> <br /><hibernate-mapping package="com.fww.po"></p> <p>    <class name="User" table="t_user"></p> <p>        <id name="id"> <br />            <generator class="native"></generator> <br />        </id> <br />        <property name="name" column="name"></property> <br />        <property name="pwd"></property></p> <p> <br />    </class> <br /></hibernate-mapping></p> </blockquote> <p>Stu是类似的操作,然后我们启动自己的项目之后,就可以在我们的数据库中观察到我们的数据库的表已经创建了。</p> <p> </p> <p> </p> <h2>如果使用的是hibernate的注解的操作的时候,struts.xml和web.xml适合上述的一直的。需要的applicationContext的配置的操作如下:</h2> <h3>applicationContext.xml</h3> <blockquote> <p><?xml version="1.0" encoding="UTF-8"?> <br /><beans xmlns="<a href="http://www.springframework.org/schema/beans"">http://www.springframework.org/schema/beans"</a> <br />    xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"">http://www.w3.org/2001/XMLSchema-instance"</a> xmlns:aop="<a href="http://www.springframework.org/schema/aop"">http://www.springframework.org/schema/aop"</a> <br />    xmlns:context="<a href="http://www.springframework.org/schema/context"">http://www.springframework.org/schema/context"</a> <br />    xsi:schemaLocation=" <br /><a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a> <br /><a href="http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</a> <br /><a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a> <br /><a href="http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">http://www.springframework.org/schema/aop/spring-aop-2.5.xsd</a> <br /><a href="http://www.springframework.org/schema/context">http://www.springframework.org/schema/context</a>   <br /><a href="http://www.springframework.org/schema/context/spring-context-2.5.xsd"">http://www.springframework.org/schema/context/spring-context-2.5.xsd"</a> <br />> <br />    <!-- spring自动的实现浏览的设置 --> <br />    <context:component-scan base-package="com.fww"></context:component-scan></p> <p>    <!-- 使用spring的注解的方式 --> <br />    <aop:aspectj-autoproxy /></p> <p>    <!-- 数据库的连接池的配置 需要使用到数据库连接池的类 --> <br />    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <br />        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <br />        <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <br />        <property name="username" value="root"></property> <br />        <property name="password" value="sa"></property> <br />        <property name="maxActive" value="20"></property> <br />    </bean></p> <p>    <!-- 关于hibernate的基本的配置的操作也是在这里实现 这里使用的是一个注解的操作,所有使用的sessionfactory需要进行相应的修改的操作 --> <br />    <bean id="sessionFactory" <br />        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"></p> <p>        <!-- hibernate的全局的配置 --> <br />        <property name="hibernateProperties"> <br />            <props> <br />                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect <br />                </prop> <br />                <prop key="hibernate.hbm2ddl.auto">update</prop> <br />                <prop key="hibernate.show_sql">true</prop> <br />                <prop key="hibernate.format_sql">true</prop> <br />            </props> <br />        </property></p> <p> <br />        <!-- 数据库的连接池的配置需要使用上述中的声明的数据库池的配置 --> <br />        <property name="dataSource" ref="dataSource"></property></p> <p> </p> <p> <br />        <!-- 使用xml进行的hibernate的配置 --> <br />        <!-- <property name="mappingResources"> <br />            <list> <br />                <value>com/fww/po/User.hbm.xml</value> <br />                <value>com/fww/po/Stu.hbm.xml</value> <br />            </list> <br />        </property> --> <br />        <br />        <property name="packagesToScan"> <br />            <list> <br />                <value>com.fww.po</value> <br />            </list> <br />        </property> <br />        </p> <p>    </bean> <br />    </p> <p>    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" > <br />        <property name="sessionFactory" ref="sessionFactory"></property> <br />    </bean> <br /></beans></p> </blockquote> <h3>我们的po类的创建如下:User</h3> <blockquote> <p>package com.fww.dao;</p> <p>import java.util.List;</p> <p>import javax.annotation.Resource;</p> <p>import org.springframework.orm.hibernate3.HibernateTemplate; <br />import org.springframework.stereotype.Component;</p> <p>import com.fww.po.User; <br />@Component <br />public class UserDao { <br />    @Resource <br />    private HibernateTemplate hibernateTemplate; <br />    <br />    <br />    public void add(User user){ <br />        hibernateTemplate.save(user); <br />    } <br />    <br />    public void del(int id){ <br />        hibernateTemplate.delete(hibernateTemplate.get(User.class, id)); <br />        <br />    } <br />    <br />    public List<User> findAll(){ <br />        return hibernateTemplate.find("from User"); <br />    } <br />} <br /></p> </blockquote> <h3>UserDao:</h3> <blockquote> <p>package com.fww.dao;</p> <p>import java.util.List;</p> <p>import javax.annotation.Resource;</p> <p>import org.springframework.orm.hibernate3.HibernateTemplate; <br />import org.springframework.stereotype.Component;</p> <p>import com.fww.po.User; <br />@Component <br />public class UserDao { <br />    @Resource <br />    private HibernateTemplate hibernateTemplate; <br />    <br />    <br />    public void add(User user){ <br />        hibernateTemplate.save(user); <br />    } <br />    <br />    public void del(int id){ <br />        hibernateTemplate.delete(hibernateTemplate.get(User.class, id)); <br />        <br />    } <br />    <br />    public List<User> findAll(){ <br />        return hibernateTemplate.find("from User"); <br />    } <br />} <br /></p> </blockquote> <h3>UserService:</h3> <blockquote> <p>package com.fww.service;</p> <p>import java.util.List;</p> <p>import com.fww.po.User;</p> <p>public interface UserService {</p> <p>    void add(User user); <br />    <br />    List<User> findAll(); <br />} <br /></p> </blockquote> <h3>UserServiceImpl:</h3> <blockquote> <p>package com.fww.service.impl;</p> <p>import java.util.List;</p> <p>import javax.annotation.Resource;</p> <p>import org.springframework.stereotype.Component;</p> <p>import com.fww.dao.UserDao; <br />import com.fww.po.User; <br />import com.fww.service.UserService; <br />@Component <br />public class UserServiceImpl implements UserService{ <br />    <br />    @Resource <br />    private UserDao userDao; <br />    <br />    public void add(User user){ <br />        this.userDao.add(user); <br />    }</p> <p>    @Override <br />    public List<User> findAll() { <br />        return this.userDao.findAll(); <br />    } <br />    <br />} <br /></p> </blockquote> <p> </p> <h3>UserAction</h3> <blockquote> <p>package com.fww.action;</p> <p>import java.util.List;</p> <p>import javax.annotation.Resource;</p> <p>import org.springframework.context.annotation.Scope; <br />import org.springframework.stereotype.Component;</p> <p>import com.fww.po.User; <br />import com.fww.service.UserService;</p> <p>@Component <br />@Scope("prototype") <br />public class UserAction {</p> <p>    @Resource <br />    private UserService service; <br />    private User user; <br />    private List<User> users ; <br />    public String add(){ <br />        this.service.add(user); <br />        return "listAll"; <br />    }</p> <p>    <br />    public String findAll(){ <br />        this.users = this.service.findAll(); <br />        return "read"; <br />    } <br />    public User getUser() { <br />        return user; <br />    }</p> <p>    public void setUser(User user) { <br />        this.user = user; <br />    }</p> <p> <br />    public List<User> getUsers() { <br />        return users; <br />    }</p> <p> <br />    public void setUsers(List<User> users) { <br />        this.users = users; <br />    } <br />} <br /></p> </blockquote> <p>可以进行一个适当的整理测试的操作:</p> <blockquote> <p>package com.fww.test;</p> <p>import org.springframework.context.ApplicationContext; <br />import org.springframework.context.support.ClassPathXmlApplicationContext;</p> <p>import com.fww.dao.UserDao; <br />import com.fww.po.User;</p> <p>public class Test { <br />    public static void main(String[] args) { <br />        ApplicationContext ac = <br />                new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"}); <br />        UserDao userDao = (UserDao) ac.getBean("userDao"); <br />        User user = new User(1, "fff", "123"); <br />        userDao.add(user); <br />        <br />    } <br />} <br /></p> </blockquote> <p>如此一个基本的三大框架的整合就完成了,在基本的数据的逻辑操作中,我们的action调用的是一个service的类,而我么的service需要使用其实现类serviceimpl进行一个调用,在serviceImpl中使用的是一个dao接口,我们的dao接口的实现是需要借助其daoImpl,daoImpl,在进行的就是调用到hibernate进行一个数据库的数据的调用,如此就是我们的一个三大框架的数据的流程。</p>