SSH---------项目环境搭建

步骤

      1. 》创建一个动态的web项目

创建项目时,记录勾选web.xml

      1. 》创建项目的目录结构

SSH---------项目环境搭建

SSH---------项目环境搭建

 

      1. 》使用tomcat运行项目
  1. 目的是看能否运行成功课前要检查教师机的tomcat运行环境)
  2. 命令行运行Tomcat要配置JAVA_HOME路径的
        1. 》部署项目到tomcat可能出现的问题
  1. 在tomcat中写jsp文件,会出现下面的错误,打不到HttpServlet

SSH---------项目环境搭建

  1. 我们只需要把tomcat中的servlet导入即可,如图

SSH---------项目环境搭建

 

  1. 运行tomcat8.5时,如果出现下面的红色警告

警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context}

只需要双击服务器弹出配置界面,勾先红色选项即可

------------------------------------------------------------------------------

SSH---------项目环境搭建

 

      1. 》导入jar包
  1. 我们的项目需要整合SSH,所以需要导入SSH、Spring依赖、日志、数据库驱动、数据库池等jar包
  2. 我们来复习三大框架的整合步骤
        1. 》导入Struts2的jar包
    1. 访问http://struts.apache.org/downloads.html下载Struts框架,这里下载2.3.32版本
    2. 导入\struts-2.3.32\apps\struts2-blank\WEB-INF\lib目录下的所有jar包到项目
    3. 导入struts与spring整合的插件jar包,

目录为\struts-2.3.32-all\struts-2.3.32\lib\struts2-spring-plugin-2.3.32

        1. 》导入Spring的jar包
  1. 访问https://repo.spring.io/webapp/#/search/archive/网站,搜索相关版本的spring-framework下载
  2. 或者访问http://repo.spring.io/release/org/springframework/spring/
    1. 下载spring-framework-3.2.0.RC2-docs
    2. 下载spring-framework-3.2.0.RC2-dist
  3. 导入spring的核心包

SSH---------项目环境搭建

 

  1. 导入spring的依赖包
    1. com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
    2. com.springsource.org.aopalliance-1.0.0Log4j.jar
    3. com.springsource.org.apache.log4j-1.2.15.jar
    4. com.springsource.org.apache.commons.logging-1.1.1.jar
    5. com.springsource.org.aspectj.weaver-1.6.8.RELEASE
        1. 》导入Hibernater的包

1.导入hibernate3.jar

2.导入\hibernate-distribution-3.6.10.Final\lib\required里的所有jar包

3.导入hibernate-jpa-2.0-api-1.0.1.Final.jar

4. cglib-2.2.jar不用导,因为spring的核心包里已经集成了cglib

SSH---------项目环境搭建

5.数据库驱动包

6.hibernater的日志包是【slf4j 】- 【slf4j-log4j12-1.7.2】- 【log4j-前面spring导入了】

7.javassist包导重了,删除一个

 

8.把项目中Web App Libraries删除,自己再把lib的jar包build到path中,方便可以删除一个jar包【IEDA不用管这步骤】

 

 

      1. 》在web中配置Struts
  1. 在web.xml配置Struts的过滤器

<!-- 1.配置struts过滤器 -->

  <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>

     <!-- 配置请求和内部转发都会经过Strut过滤器 -->

     <dispatcher>REQUEST</dispatcher>

     <dispatcher>FORWARD</dispatcher>

  </filter-mapping>

 

  1. 添加struts.xml配置文件

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

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

         <constant name="struts.devMode" value="true" />

         <package name="basicstruts2" extends="struts-default">

                  <!-- 配置需要进行权限控制的页面访问的规则 -->

                  <action name="page_*_*">

                          <result name="success" type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result>

                  </action>

         </package>

</struts>

 

      1. 》在web.xml配置Spring的监听器

1.在web.xml配置Spring的监听器

  <!-- 2.配置spring的监听器 -->

  <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:applicationContext.xml</param-value>

  </context-param>

  <listener>

      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

 

  1. 添加spring的applicationContext文件

<?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:context="http://www.springframework.org/schema/context"

  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/context

                           http://www.springframework.org/schema/context/spring-context.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">

 

</beans>

 

      1. 》测试并讲解web.xml中forward的作用
  1. 在web.xml中配置forward是为了内部转发也能被struts的过滤拦截
  2. 测试:创建一个action然后跳转到WEB-INF内的某个jsp文件
  3. 演示有无<dispatcher>FORWARD</dispatcher>的作用是否一样

SSH---------项目环境搭建

Struts.xml

SSH---------项目环境搭建

Web.xml

SSH---------项目环境搭建

 

 

      1. 》Spring中配置hibernate
        1. 》Config中添加一个jdbc.properties文件

driverClass=com.mysql.jdbc.Driver

jdbcUrl=jdbc:mysql:///bos

user=gyf01

password=123456

 

        1. 》在spring的applicationContext.xml的配置
  1. 加载jdbc属性文件
  2. 数据源
  3. Spring框架用于整合hibernate的工厂bean
  4. 事务管理器
  5. 组件扫描
  6. 引用注解解析器
  7. 事务注解

<!-- 加载jdbc属性文件 -->

     <context:property-placeholder location="classpath:jdbc.properties"/>

                             

     <!-- 数据源 -->

     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

          <property name="driverClass" value="${driverClass}"/>

          <property name="jdbcUrl" value="${jdbcUrl}"/>

          <property name="user" value="${user}"/>

          <property name="password" value="${password}"/>

     </bean>

     <!-- spring框架用于整合Hibernate的工厂bean -->

     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

          <property name="dataSource" ref="dataSource"/>

          <!-- 注入Hibernate相关的属性 -->

          <property name="hibernateProperties">

               <props>

                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>

                    <prop key="hibernate.show_sql">true</prop>

                    <prop key="hibernate.format_sql">true</prop>

                    <prop key="hibernate.hbm2ddl.auto">update</prop>

               </props>

          </property>

          <!-- 注入Hibernate的映射文件 -->

          <property name="mappingDirectoryLocations">

               <list>

                    <value>classpath:com/gyf/bos/domain</value>

               </list>

          </property>

     </bean>

    

     <!-- 事务管理器 -->

     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

          <property name="sessionFactory" ref="sessionFactory"/>

     </bean>

    

     <!-- 组件扫描 -->

     <context:component-scan base-package="com.gyf.bos"/>

     <!-- 引入注解解析器 -->

     <context:annotation-config/>

     <!-- 事务注解 -->

     <tx:annotation-driven />

 

 

      1. 》解决中文乱码问题
  1. 在web.xml添加下面的配置
  2. 学习CharacterEncodingFilter
  3. 分析源码可是发现配置的过滤器只对post提交方式有用

<filter>

     <filter-name>characterEncodingFilter</filter-name>

     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

     <init-param>

          <param-name>encoding</param-name>

          <param-value>UTF-8</param-value>

     </init-param>

  </filter>

  <filter-mapping>

     <filter-name>characterEncodingFilter</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>

 

      1. 》解决Hibernate延时加载问题【后面再讲】
  1. 在web.xml添加下面的配置

<filter>

     <filter-name>openSession</filter-name>

     <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

  </filter>

  <filter-mapping>

     <filter-name>openSession</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>