博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2+hibernate3+spring3(ssh2)框架下的web应用
阅读量:7232 次
发布时间:2019-06-29

本文共 6463 字,大约阅读时间需要 21 分钟。

hot3.png

首先我们需要一点点jar包,来支持我们的工作,具体这些jar包是干嘛的自己去搜。如图:

   26094831_DhPn.jpg

26094831_crlt.jpg

    在工程里面,将这些jar包复制到WebContent下的WEB-INF下的lib目录里面,Eclipse会自动将jar包加到工程项目里。如图

26094831_VAn3.jpg

    ssh2的优势在于,加入jar包,写上配置文件,就能使用。它的优势在于使用配置文件,主要是xml来代替了大量的代码书写操作,但是缺点在于新人对于配置文件简直两眼一抹黑,而且大的工程的话会存在配置文件泛滥成灾。所以事有利弊,一切在于自己的掌握。

   (一)配置struts2。

    struts2的配置很简单,只需要在src目录下建立文件struts.xml。具体怎么才能建立这个文件是属于Eclipse的问题,就不多说了。

    打开struts2,如果你使用的是MyEclipse的话,或许看不到如我下图的东西,你需要如图点击下source选项卡就行了。

26094831_izOf.jpg

    在里面写上:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
  <constant name="struts.custom.i18n.resources" value="message" />
  <package name="SBPM" extends="json-default">

    <!--1Common Action -->

    <action name="login" class="ManageUserAction" method="login">
      <result name="input">/WEB-PAGE/Login.jsp</result>
      <result name="success">/WEB-PAGE/Test.jsp</result>
    </action>
    <!-- 2ChangeLanguage -->
    <!-- 3Request operation -->
    <!-- 4Change url -->
  </package>
</struts>

解释下这个文件,

    1.1<? 到 > 是这个xml的dtd,encoding和version的定义,从<struts>到</struts>是我们定义的struts需要使用的内容。

    1.2<constant....这一行,是定义的国际化文件内容,就是internationalization因为从i到n有18个字母,所以又叫i18n。后面我们将使用2个文件名为message的文件来实现中英文的转化。

    1.3从<package>到</package>是我定义的一个package,可以用于workspace的转换等工作,可 以彼此继承,因为这个工程很小,所以就定义一个就行了。使用默认的workspace /。注意,extends="json-default" 一般这里是使用struts-default,但是json是struts-default的扩展包,使用json-default的话,我就能使用 json与前台,用于不刷新页面的后台调用和前台显示。

    1.4像<!-- 2ChangeLanguage -->这样的东西,是注释。我饿打算把我的action分成4部分,如注释所言。随手写注释是个非常好的习惯。具体原因可以去搜下。在<!-- 与-->之间可以写任何内容。

    1.5我写了第一个action。  

<action name="login" class="ManageUserAction" method="login">

      <result name="input">/WEB-PAGE/Login.jsp</result>
      <result name="success">/WEB-PAGE/Test.jsp</result>
</action>

    name为这个action的名字,它是提供给jsp页面用于调用action时的标志。

    class是这个action在工程里的位置,本来应当写成com.sbpm.action.ManageUser的,但是我使用了spring对struts进行了托管,所以这里填的是spring中写的action的class。

    每个action可以定义很多的result。当我们在action的文件里面进行操作的时候,可以返回这些String,然后会根据我们返回 String的内容找到result的name,在调用result里面所定义的操作。我们这里定义了2个返回,如果返回input,那么就跳转到登陆页 面,如果返回success,跳转到Test.jsp页面。这里写的/WEB-PAGE/Test.jsp是工程下的文件所在目录+文件名。

26094831_CxGZ.jpg

    打开上图的WEB-INF下的web.xml文件,写下如下内容

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>SBPMS</display-name>
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  <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>
  <welcome-file-list>
    <welcome-file>/Login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

需要解释一下。

    2.1从<session-config> 到  </session-config>设置了我们页面的session的持续时间为10分钟。实际应用中就是登陆超时,10分钟不动,你再点页面的话我会提示请重新登陆。

    2.2其余分别定义了监听器,spring文件位置,过滤器,和初始界面。

That's all。struts2配置完毕。

    (二)配置Spring和Hibernate

    在WebContent下的WEB-INF下建立applicationContext.xml文件,这是spring配置所需要的唯一文件,我计划将Spring与Hibernate的配置放在一起。打开文件,写入

<?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-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
  <!-- Connect dataSource and sessonFactory -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/sbpms"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    <property name="maxActive" value="100"></property>
  </bean>
  <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.connection.autocommit">true</prop>
        <prop key="hibernate.show_sql">true</prop>
      </props>
    </property>
    <property name="mappingResources">
      <list>
        <value>com/sbmps/bean/User.hbm.xml</value>
      </list>
    </property>
  </bean>
  <!-- IOC DAOs -->
  <!-- DAO for User -->
  <bean id="UserDao" class="com.sbpms.dao.impl.UserDaoImpl">
    <property name="sessionFactory">
      <ref bean="sessionFactory"></ref>
    </property>
  </bean>
  <bean id="UserService" class="com.sbpms.service.impl.UserServiceImpl">
    <property name="userDao" ref="UserDao"></property>
  </bean>
  <!-- IOC Actions -->
  <!-- Action for users -->
  <bean id="ManageUserAction" class="com.sbpms.action.ManageUserAction"
    scope="prototype">
    <property name="service" ref="UserService"></property>
  </bean>
</beans>

解释下

    2.1<!-- Connect dataSource and sessonFactory -->部分是配置hibernate,主要配置jdbc的链接,dataSource和sessionFactory。jdbc是链接数据库的 url里面jdbc:mysql://localhost:3306/sbpms为数据库内容,我自己建立的数据库sbpms,其余内容写法是固定的,使 用了端口3306,是在配置数据库的时候设置的。然后设置了登陆的用户名root密码root也是设置数据库的时候设置的,再设置了下最大连接数100。

    sessionFactory是将我写的java类:bean中得类与数据库的表相关联,除了<value>com/sbmps/bean /User.hbm.xml</value>这一行之外的其余东西都可以不改。这一行的意思在于将我在bean中得表-类关联文件读取。前面 还设置了显示sql,自动提交,dialect等内容。这是一种工厂模式。

    2,2   <!-- IOC DAOs --> <!-- DAO for User -->是将我的dao层java类进行ioc控制,通过    <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property>将dao层与sessionFactory关联,同理,在后面的ioc中,将service与dao关联,将 action与service关联。前面在1.5提到的,struts.xml中使用的action类的class,就是这里bean的id,为 ManageUserAction,这个id关联到具体的com.sbpms.action.ManageUserAction类。这样,将jsp与 struts.xml与applicationContext.xml和数据库都关联起来了。

    2.3为什么要放在WEB-INF下面,因为数据库操作的文件不希望在运行时被更改,放在WEB-INF下面就有这个优势。

    That‘s all,ssh2框架就配置完成。当然这里还有另外的方法,就是将hibernate的配置写成独立的文件,叫hibernate.cfg.xml文件。在里面写hibernate的配置。因为这个项目的hibernate很小,所以我觉得没必要。

转载于:https://my.oschina.net/u/1412027/blog/187887

你可能感兴趣的文章
vue 源码:如何调试源码
查看>>
Flutter beta3 使用感受
查看>>
如何使用WijmoJS 纯前端设计器,快速生成 Angular 应用
查看>>
理解ES6 proxy&reflection
查看>>
『中级篇』Docker 水平扩展和负载均衡(40)
查看>>
idea中file-template的使用
查看>>
JavaScript 浅谈 button 和 input type=button 的区别
查看>>
未知领域
查看>>
混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案
查看>>
MIT最新研究:隔着一堵墙,“看透"你的心!
查看>>
GraphQL搭配MongoDB入门项目实战
查看>>
APP实现再次查询功能
查看>>
痛失移动支付的翼支付,未来仍存四大机会?
查看>>
移动电竞迅猛崛起背后满满都是痛点?
查看>>
入门tensorflow.js,写一个双色求预测程序!梦想要有的,万一中了呢!
查看>>
Vue生命周期activated之返回上一页不重新请求数据
查看>>
windows下实用工具推荐
查看>>
【刘文彬】【精解】EOS TPS 多维实测
查看>>
10大最受欢迎的机器学习和数据科学Python库
查看>>
Leaflet-Develop-Guide
查看>>