SSH框架整合,annotation版

来源:互联网 发布:航模电调编程 编辑:程序博客网 时间:2024/06/03 20:36

通过maven 整合ssh 框架,用xml 配置太麻烦了,所有想用annotation 的方式整合一下ssh 框架,这样只需要很少的配置,就可以使用ssh 框架了,好了,废话不多说,上货。

首先是我在这次整合中用到的各种依赖。对于依赖已经加好了注释。

        <!-- servelt servlet的api -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>javax.servlet-api</artifactId>            <version>3.1.0</version>            <scope>provided</scope>        </dependency>        <!-- struts2 的依赖 -->        <dependency>            <groupId>org.apache.struts</groupId>            <artifactId>struts2-core</artifactId>            <version>2.5.12</version>        </dependency>        <!-- struts2零配置插件 @Action  -->        <dependency>            <groupId>org.apache.struts</groupId>            <artifactId>struts2-convention-plugin</artifactId>            <version>2.5.12</version>        </dependency>        <!-- hibernate 依赖 -->        <dependency>            <groupId>org.hibernate</groupId>            <artifactId>hibernate-core</artifactId>            <version>5.2.12.Final</version>        </dependency>        <!-- spring context -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>4.3.10.RELEASE</version>        </dependency>        <!-- spring 对于orm技术的一些支持 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-orm</artifactId>            <version>4.3.10.RELEASE</version>        </dependency>        <!-- spring 对于web技术的一些支持 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-web</artifactId>            <version>4.3.10.RELEASE</version>        </dependency>        <!-- struts2对spring开发的plugin -->        <dependency>            <groupId>org.apache.struts</groupId>            <artifactId>struts2-spring-plugin</artifactId>            <version>2.5.12</version>        </dependency>        <!-- mysql 连接包 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.43</version>        </dependency>        <!-- fastjson -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.41</version>        </dependency>

接下里在spring 中配置一下sessionFactroy 这样在hibernate 就不要配置,且将sessionFactroy 交给spring 管理。用的时候只要autowried 就好,更方便,后面会提到。

<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"       xsi:schemaLocation="http://www.springframework.org/schema/beans                           http://www.springframework.org/schema/beans/spring-beans.xsd                           http://www.springframework.org/schema/context                           http://www.springframework.org/schema/context/spring-context.xsd"        default-autowire="byType">        <context:component-scan base-package="com.woomoon"></context:component-scan>        <!-- 已经new好的sessionfactory,使用的不是hibernate的sessionFactory,而是spring对于orm技术支持下面的LocalSessionFactoryBean -->        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">            <!-- 配置文件的位置   -->            <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>        </bean></beans>

再配置一下hibernate,等一下做一个测试可以看到效果。

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>        <!-- Database connection settings -->        <property name="connection.driver_class">com.mysql.jdbc.Driver</property><!--连接字符串-->        <property name="connection.url">jdbc:mysql://127.0.0.1/test</property>        <property name="connection.username">root</property><!--用户名-->        <property name="connection.password">qwe</property><!--密码-->        <!-- SQL dialect-->        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>        <!-- Echo all executed SQL to stdout  是否打印sql语句 -->        <property name="show_sql">true</property>        <!-- Drop and re-create the database schema on startup 映射数据表        <property name="hbm2ddl.auto">create</property>        -->        <!--当一个类被加上注解后,这个实体类与数据表之间就会产生映射关系        -->         <mapping class="com.woomoon.entitys.StuEntity"/>    </session-factory></hibernate-configuration>

hibernate 中映射的实体类:

package com.woomoon.entitys;import javax.persistence.Entity;import javax.persistence.Id;@Entity(name="tb_stu")  //这里一定要加@Entity 这个annotation ,否者对象关系映射不起来,会报错的public class StuEntity extends BaseEntity {    @Id    private Integer stu_id;    private String stu_name;    private String stu_sex;//略去getter and setter 方法,大家补一下吧。}

建一个testbean 的类:为后面做测试:

package com.woomoon.dao.impl;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.woomoon.entitys.StuEntity;@Repository("testBean")     //定义testBeanpublic class TestBean {    //自动注入,不需要再进行xml的配置。    @Autowired    SessionFactory sessionFactory;    public List<StuEntity> queryStu () {        try {            Session session = sessionFactory.openSession();            List<StuEntity> list = session.createQuery("from tb_stu", StuEntity.class).getResultList();//          HttpServletResponse response = ServletActionContext.getResponse();            return list;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

先完成以上配置,到测试类中看一下效果,

测试类代码:package stu_ssh;import java.util.List;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.woomoon.dao.impl.TestBean;import com.woomoon.entitys.StuEntity;public class Test {    private static ClassPathXmlApplicationContext cp;    public static void main(String[] args) {        cp = new ClassPathXmlApplicationContext("spring.xml");        TestBean testbean = (TestBean) cp.getBean("testBean");//拿到testBean        List<StuEntity> list = testbean.queryStu();        System.out.println("\n\n\n"+list);    }}

结果:
输出结果

然后我们继续整合struts2 框架,

这里struts2 的配置没有,完全不需要配置xml 但是拦截器需要用到xml 配置,我这里就不配置了,建一个action包,这个不用解释,大家应该都懂,上action类,继续完成后面的配置,package com.woomoon.action;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Result;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import com.woomoon.entitys.StuEntity;public class TestAction {    @Autowired    SessionFactory sessionFactory;    @Action(value = "index", results = { @Result(name = "success", location = "/WEB-INF/html/index.html") })    public String queryStu() {        return "success";    }//这里只是做个测试,就不调用数据访问层了,直接将sessionFactory注入进来,    @Action("query4list")    public void query4lis() {        try {            Session session = sessionFactory.openSession();            List<StuEntity> list = session.createQuery("from tb_stu", StuEntity.class).getResultList();            HttpServletResponse response = ServletActionContext.getResponse();            response.setCharacterEncoding("utf-8");            response.getWriter().write(list.toString());        } catch (Exception e) {            e.printStackTrace();        }    }}

配置一下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"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"    id="WebApp_ID" version="3.0">    <display-name>stu_ssh</display-name>    <welcome-file-list>        <welcome-file>index.html</welcome-file>        <welcome-file>default.html</welcome-file>    </welcome-file-list>    <!-- struts  拦截所有的请求    *.action 也可以 -->    <filter>        <filter-name>stu_ssh</filter-name>        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>stu_ssh</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <!--初始化spring 容器-->    <listener>        <display-name>spring-web</display-name>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:spring.xml</param-value>    </context-param></web-app>

启动tomcat 看一下效果。

访问一下与index.action ,看一下效果,
查询出的值

再来访问一下query4list.action 看一下json 返回的数据
json数据

大致配置就是如此。不足之处,多多指教。不喜勿喷,谢谢!
转载请指明出处。谢谢!

原创粉丝点击