框架搭建,逆向生成bean类dao类,配置文件(第三天)

第三天;

框架搭建

1.打开myeclispe

File=>New=>Web Project


image.png

2.输入项目名 myTest并点击Finish

点击Finish

3.添加Spring支持

右键项目名
MyEclispe=>Add Spring Capabilities...

image.png

如图所示我们要选中Spring2.5下面的5项
1.Spring2.5 AOP Libraries
2.Spring2.5 Core Libraries
3.Spring2.5 Persistence Core Libraries
4.Spring2.5 Persistence JDBC Libraries
5.Spring2.5 Web Libraries
然后 Next==》Finish


image.png

2.添加Hibernate支持

右键项目名
MyEclispe=>Add Hibernate Capabilities...


image.png
image.png

点击Next

image.png

继续点击Next,选中oracle

image.png
image.png

点击Finish

3.添加Struts2支持

右键项目名
MyEclispe=>Add Struts Capabilities...

image.png

如图所示,选中Struts2.1,然后点击Next


image.png

选中两项,点击Finish


image.png

至此S2SH框架搭建完毕

image.png

上面红框中的都可以去掉,换成jar包,储存在
WebRoot=》WEB-INF=》lib文件夹里面
我把这个项目涉及到的所有jar,js,css,图片储存在百度云盘里面,可供下载

同时我建立了四个包,导入了EasyUi所需js,css和图片,使架构更清晰

image.png

hibernate逆向工程

1.打开DB Browser视图


DB Browser视图

2.双击oracle,然后双击Connected to oracle,然后双击MYDB,按住Ctrl选中我们的四张表ALLCLASS,ERRORSUBJECT,SUBJECT,USERINFO,然后右键选择Hibernate Reverse Engineering


3.如图,将各个数据补齐,然后点击Next

image.png

4.id Generator输入sequence,直接点击Finish

image.png

5.如图,在com.jianshu.bean逆向生成了8个java类,4个.hbm.xml文件 ,我们把含有DAO的4个java类移动到com.jianshu.dao*

image.png

6.com.jianshu.bean里面有4个java类,4个hibernate配置文件,每个配置文件对应一个java类(也叫实体类),在这里不建议修改

image.png

7.在这里我自己动手生成对应的Action,Service

image.png

8.下一步由Spring接管这些java类,我们打开applicationContext.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: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.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!-- 数据源 -->
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName"
            value="oracle.jdbc.driver.OracleDriver">
        </property>
        <property name="url"
            value="jdbc:oracle:thin:@127.0.0.1:1521:orcl">
        </property>
        <property name="username" value="mydb"></property>
        <property name="password" value="mydb"></property>
    </bean>
    <!-- 缓冲了HIbernate自动生成SQL语句和其他的映射数据 还缓冲了一些将来有可能重复利用的数据 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle9Dialect
                </prop>
            </props>
        </property>
        <property name="mappingResources">
            <list>
               <!-- 在bean包里面都有对应的配置文件 -->
                <value>com/jianshu/bean/Userinfo.hbm.xml</value>
                <value>com/jianshu/bean/Errorsubject.hbm.xml</value>
                <value>com/jianshu/bean/Subject.hbm.xml</value>
                <value>com/jianshu/bean/Allclass.hbm.xml</value></list>
        </property>
        </bean>
            <!-- Hibernate事务管理 -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

    <!-- 配置事务拦截 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="upd*" propagation="REQUIRED" />
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

    <!-- 配置aop,配置对哪些类的方法进行事务管理,当前com.myhopu.service包中的子包、类中所有方法需要 -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.jianshu.service.*.*(..))" />
    </aop:config>
    <!-- dao层 在这里id的首字母要小写 -->
    <bean id="UserinfoDAO" class="com.jianshu.dao.UserinfoDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="ErrorsubjectDAO"
        class="com.jianshu.dao.ErrorsubjectDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="SubjectDAO" class="com.jianshu.dao.SubjectDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="AllclassDAO" class="com.jianshu.dao.AllclassDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
        <!-- service层   scope="prototype"在这里指单实例-->
    <bean id="allclassService" class="com.jianshu.service.AllclassService" scope="prototype"/>
    <bean id="subjectService" class="com.jianshu.service.SubjectService" scope="prototype"/>
    <bean id="userinfoService" class="com.jianshu.service.UserinfoService" scope="prototype"/>
    <bean id="errorsubjectService" class="com.jianshu.service.ErrorsubjectService" scope="prototype"/>
    <!-- action层 -->
    <bean id="allclassAction" class="com.jianshu.action.AllclassAction" scope="prototype"/>
    <bean id="subjectAction" class="com.jianshu.action.SubjectAction" scope="prototype"/>
    <bean id="userinfoAction" class="com.jianshu.action.UserinfoAction" scope="prototype"/>
    <bean id="errorsubjectAction" class="com.jianshu.action.ErrorsubjectAction" scope="prototype"/>
    </beans>

9.如图,是不是发现Spring中对应的java文件图标右上角出现个“S”,这就证明配置生效


image.png

同时在上图我们看见了三个xml后缀的文件
分别是
1.web.xml ---------------------------用来初始化工程配置信息,启动加载级别,写过滤器或监听器等配置文件
2.struts.xml---------------------------判断要调用哪个Action去处理用户请求
3.applicationContext.xml---------ApplicationContext的中文意思是“应用前后关系”,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等

在这之中
applicationContext.xml已经配置好了
让我们看看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">
  <display-name></display-name>
  <!-- 指定了首页,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。 -->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 用来定位applicationContext.xml文件的上下文配置 -->  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext*.xml</param-value>
  </context-param>
  <filter>
  <!--   Hibernate 允许对关联对象、属性进行延迟加载,
          但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。
          如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,
          当 Web 层访问到那些需要延迟加载的数据时,
          由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常
          而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。
          OpenSessionInViewFilter的主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。
          目的是为了实现"Open Session in View"的模式 -->
    <filter-name>openSessionInViewFilter</filter-name>
    <filter-class>
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
  </filter>
  <!-- struts2过滤器 -->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter>
  <!-- 启用延迟加载(openSessionInViewFilter) -->
  <filter-mapping>
    <filter-name>openSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 启用struts2过滤器 -->
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
  <!-- 配置Spring监听 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>

接着我们打开strus.xml,添加包名

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <package name="default" namespace="/answer" extends="struts-default">
    
    </package>
</struts>    

第三天总结
1.搭建S2SH框架
2.逆向生成Dao,bean
3.对三个配置文件要理解
第四天:登录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,605评论 18 399
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,796评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,808评论 0 11
  • 我不难过 这不算什么 只是为什么眼泪会流我也不懂 孙燕姿的歌词里这样对自己说。 “别哭了” “别伤心,一切都会好起...
    熙fun心理阅读 560评论 2 2