我的ssh使用经验之谈

ssh是我们常用的轻量级框架。

1.使用ssh搭建项目.

2.配置数据源,seesionFactory,事务:一般在hibernate.cfg.xml文件中配置。

================DBconfig=================================

<?xml version="1.0" encoding="UTF-8"?>
<UNITEDDB>
<CURRENTDB>
<DBIP>127.0.0.1</DBIP>
<DBPORT>1433</DBPORT>
<USER>BCDIBANK</USER>
<PASSWORD>BEICHENDE</PASSWORD>
<DBMSNAME>SQLSERVER</DBMSNAME>
<VERSION>JTDS</VERSION>
</CURRENTDB>
<DBMS NAME="SQLSERVER" VERSION="JTDS">
<CONNECTIONURL>jdbc:jtds:sqlserver://${DBIP}:${DBPORT};DatabaseName=${DBNAME};SelectMethod=cursor</CONNECTIONURL>
<CONNECTIONDRIVER>net.sourceforge.jtds.jdbc.Driver</CONNECTIONDRIVER>
<DIALECT>org.hibernate.dialect.SQLServerDialect</DIALECT>
</DBMS>
<DBMS NAME="DB2" VERSION="LUW">
<CONNECTIONURL>jdbc:db2://${DBIP}:${DBPORT}/${DBNAME}</CONNECTIONURL>
<CONNECTIONDRIVER>com.ibm.db2.jcc.DB2Driver</CONNECTIONDRIVER>
<DIALECT>org.hibernate.dialect.DB2Dialect</DIALECT>
</DBMS>
<DBMS NAME="Oracle" VERSION="thin">
<CONNECTIONURL>jdbc:oracle:thin:@${DBIP}:${DBPORT}:${DBNAME}</CONNECTIONURL>
<CONNECTIONDRIVER>oracle.jdbc.driver.OracleDriver</CONNECTIONDRIVER>
<DIALECT>org.hibernate.dialect.Oracle9Dialect</DIALECT>
</DBMS>
<DBMS NAME="Sybase" VERSION="Sybase">
<CONNECTIONURL>jdbc:sybase:Tds:${DBIP}:${DBPORT}/${DBNAME}?Unicode=true&amp;characterEncoding=utf8&amp;noAccessToProcedureBodies=true</CONNECTIONURL>
<CONNECTIONDRIVER>com.sybase.jdbc3.jdbc.SybDriver</CONNECTIONDRIVER>
<DIALECT>org.hibernate.dialect.SybaseDialect</DIALECT>
</DBMS>
</UNITEDDB>

================hibernate.cfg.xml配置========================

   <!-- 数据库连接池配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" lazy-init="default" autowire="default">
<property name="driverClass">
<!-- <value>net.sourceforge.jtds.jdbc.Driver</value> -->
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
lazy-init="default" autowire="default">
<property name="targetObject">
<ref bean="unitedDBConfig" />
</property>
<property name="targetMethod">
<value>getReplaceValue</value>
</property>
<property name="arguments">
<list>
<value>CONNECTIONDRIVER</value>
<array>
<value></value>
</array>
</list>
</property>
</bean>
</property>
<property name="jdbcUrl">
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
lazy-init="default" autowire="default">
<property name="targetObject">
<ref bean="unitedDBConfig" />
</property>
<property name="targetMethod">
<value>getReplaceValue</value>
</property>
<property name="arguments">
<list>
<value>CONNECTIONURL</value>
<array>
<value>IBANK</value><!-- 数据库名 -->
</array>
</list>
</property>
</bean>
</property>
<property name="user">
<value>${USER}</value>
</property>
<property name="password">
<value>${PASSWORD}</value>
</property>
<property name="initialPoolSize">
<value>10</value>
</property>
<property name="minPoolSize">
<value>10</value>
</property>
<property name="maxPoolSize">
<value>100</value>
</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">
<value>3</value>
</property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">
<value>30</value>
</property>
</bean>
<bean id="sessionFactory_ibank"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource_ibank" />
</property>

   <property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${DIALECT}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
</props>
</property>
<property name="mappingResources">
<!-- 列出本库中的所有映射文件 -->
<list>
<value>com/Entity.hbm.xml</value>
</list>

</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory_ibank" />
</property>
</bean> 
<aop:aspectj-autoproxy proxy-target-class="true">
</aop:aspectj-autoproxy>
<tx:annotation-driven transaction-manager="transactionManager"  order="2000" />
</beans>

=================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:jsp="http://java.sun.com/xml/ns/javaee/jsp" 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.html</welcome-file>
  </welcome-file-list>
  <listener>
   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
  <listener>
    <listener-class>com.beichende.ibank.pms.web.listener.OnLineCountListener</listener-class>
  </listener>
  <listener>
  <display-name>OrderQueueThreadPool</display-name>
  <listener-class></listener-class>
  </listener>  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/xml-bean/entry.xml,/WEB-INF/hibernate.cfg.xml</param-value>//初始化各个spring的配置文件
  </context-param>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/config/log4j.xml</param-value>
  </context-param>
  <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
  </context-param>
  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>app.root</param-value>
  </context-param>
  <filter>
    <filter-name>checkloginfilt</filter-name>
    <filter-class>
  </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>checkloginfilt</filter-name>
    <url-pattern>/adm/*</url-pattern>
  </filter-mapping>
  <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>*.action</url-pattern>
  </filter-mapping>
  <filter-mapping>  
    <filter-name>struts2</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
  </filter-mapping>
  <servlet>
    <servlet-name>JasperReportImageServlet</servlet-name>
    <servlet-class>  
            net.sf.jasperreports.j2ee.servlets.ImageServlet   
        </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>JasperReportImageServlet</servlet-name>
    <url-pattern>/servlets/image</url-pattern>
  </servlet-mapping>
    <error-page>
<error-code>404</error-code>
<location>/itm/common/error404.jsp</location>
</error-page>
  <error-page>  
<exception-type>java.lang.Exception</exception-type>  
<location>/itm/common/error500.jsp</location>  
  </error-page>
</web-app>

3,写pojo类:

--User.java--

private Integer userId;
private String userNo;
private String userName;
private String userPwd;
private Set<Role> roles=new HashSet<Role>();

       --role.java----

private Integer roleId;
private String roleName;

private Set<User> users=new HashSet<User>();

---User.hbm.xml--

   <hibernate-mapping>
    <class name="com.demo.User" table="UserList" dynamic-insert="true" dynamic-update="true">
        <id name="userId" type="java.lang.Integer">
            <column name="UserID" />
            <generator class="native" />
        </id>
        <property name="userNo" type="java.lang.String">
            <column name="UserNo" length="10" not-null="true" />
        </property>
        <property name="userName" type="java.lang.String">
            <column name="UserName" length="20" not-null="true" />
        </property>
        <property name="userPwd" type="java.lang.String">
            <column name="UserPwd" length="40" not-null="true" />
        </property>
        <set name="roles" cascade="save-update" inverse="false" lazy="true" fetch="select" table="User_Role">
            <key column="UserID"></key>
            <many-to-many class="com.demo.Role" column="RoleID"></many-to-many>
        </set>
    </class>
</hibernate-mapping>

----Role.hbm.xml----

<hibernate-mapping>
    <class name="com.demo.Role" table="RoleList" dynamic-insert="true" dynamic-update="true">
        <id name="roleId" type="java.lang.Integer">
            <column name="RoleID" />
            <generator class="native" />
        </id>
        <property name="roleName" type="java.lang.String">
            <column name="RoleName" length="32" not-null="true" />
        </property>
        <set name="users" cascade="save-update" inverse="false" lazy="true" fetch="select" table="Usert_Role">
            <key column="RoleID"></key>
            <many-to-many class="com.demo.User" column="UserID"></many-to-many>
        </set>
    </class>
</hibernate-mapping>

4,写action

---Test.action----

private String userNo;

private List<RoleDto> roles = new ArrayList<RoleDto>();//说明这里的RoleDto与Role里的属性相同,为什么用dto?这是应为json会对Role进行级联查询,影响性能。

public String init(){
try {
……
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

5,配置struts.xml

<struts>
<constant name="struts.devMode" value="true"></constant>
    <package name="manage" namespace="/page" extends="json-default">
   <action name="check_userlogin" class="checkloginaction">
      <result type="json"></result>
   </action>
</package>
</struts>

完成!

    




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值