步骤
-
-
- 》创建一个动态的web项目
-
创建项目时,记录勾选web.xml
-
-
- 》创建项目的目录结构
-
-
-
- 》使用tomcat运行项目
-
- 目的是看能否运行成功(课前要检查教师机的tomcat运行环境)
- 命令行运行Tomcat要配置JAVA_HOME路径的
-
-
- 》部署项目到tomcat可能出现的问题
-
-
- 在tomcat中写jsp文件,会出现下面的错误,打不到HttpServlet
- 我们只需要把tomcat中的servlet导入即可,如图
- 运行tomcat8.5时,如果出现下面的红色警告
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} 只需要双击服务器弹出配置界面,勾先红色选项即可 ------------------------------------------------------------------------------ |
-
-
- 》导入jar包
-
- 我们的项目需要整合SSH,所以需要导入SSH、Spring依赖、日志、数据库驱动、数据库池等jar包
- 我们来复习三大框架的整合步骤
-
-
- 》导入Struts2的jar包
-
- 访问http://struts.apache.org/downloads.html下载Struts框架,这里下载2.3.32版本
- 导入\struts-2.3.32\apps\struts2-blank\WEB-INF\lib目录下的所有jar包到项目
- 导入struts与spring整合的插件jar包,
-
目录为\struts-2.3.32-all\struts-2.3.32\lib\struts2-spring-plugin-2.3.32
-
-
-
- 》导入Spring的jar包
-
-
- 访问https://repo.spring.io/webapp/#/search/archive/网站,搜索相关版本的spring-framework下载
- 或者访问http://repo.spring.io/release/org/springframework/spring/
- 下载spring-framework-3.2.0.RC2-docs
- 下载spring-framework-3.2.0.RC2-dist
- 导入spring的核心包
- 导入spring的依赖包
- com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
- com.springsource.org.aopalliance-1.0.0Log4j.jar
- com.springsource.org.apache.log4j-1.2.15.jar
- com.springsource.org.apache.commons.logging-1.1.1.jar
- com.springsource.org.aspectj.weaver-1.6.8.RELEASE
-
- 》导入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
5.数据库驱动包
6.hibernater的日志包是【slf4j 】- 【slf4j-log4j12-1.7.2】- 【log4j-前面spring导入了】
7.javassist包导重了,删除一个
8.把项目中Web App Libraries删除,自己再把lib的jar包build到path中,方便可以删除一个jar包【IEDA不用管这步骤】
-
-
- 》在web中配置Struts
-
- 在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> |
- 添加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> |
-
-
- 》在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> |
- 添加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> |
-
-
- 》测试并讲解web.xml中forward的作用
-
- 在web.xml中配置forward是为了内部转发也能被struts的过滤拦截
- 测试:创建一个action然后跳转到WEB-INF内的某个jsp文件
- 演示有无<dispatcher>FORWARD</dispatcher>的作用是否一样
Struts.xml |
Web.xml |
-
-
- 》Spring中配置hibernate
- 》Config中添加一个jdbc.properties文件
- 》Spring中配置hibernate
-
driverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql:///bos user=gyf01 password=123456 |
-
-
-
- 》在spring的applicationContext.xml的配置
-
-
- 加载jdbc属性文件
- 数据源
- Spring框架用于整合hibernate的工厂bean
- 事务管理器
- 组件扫描
- 引用注解解析器
- 事务注解
<!-- 加载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 /> |
-
-
- 》解决中文乱码问题
-
- 在web.xml添加下面的配置
- 学习CharacterEncodingFilter
- 分析源码可是发现配置的过滤器只对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> |
-
-
- 》解决Hibernate延时加载问题【后面再讲】
-
- 在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> |