ssh框架的搭建 详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh框架的搭建 详解相关的知识,希望对你有一定的参考价值。

一、new 一个maven工程 

技术分享

会发现报错,这里是因为pom.xml 没有导入servlet依赖的包。  导入进去。

 pom.xml是控制整个项目的,,是项目对象模型  主要包括依赖配置 基本配置  构建配置  项目信息  环境设置

导入servlet依赖  

<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

技术分享

错误会消失。

技术分享

创建这些源包

二、配置web.xml文件

1.头文件

<?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"
id="WebApp_ID" version="2.5">

</web-app>

2.配置内容

<!-- 标记web应用的一个名称 -->
<display-name>ssh</display-name>

 

<!-- 声明初始化参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>                                               ///这一行是引用配置文件
<param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>  //此行是配置 引用文件的路径  随后创建此处引用的配置文件,spring.xml  spring-hibernate.xml。创建在src/main/resources 文件夹下
</context-param>

 

<!--过滤器配置 -->

处理编码问题

<filter>
<filter-name>encodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

<--  配置监听器 -->

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

 

<!--servlet相关的配置 -->

<servlet>
<description>spring mvc servlet</description>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   //DispatcherServlet所有请求的入口
<init-param>
<param-name>contextConfigLocation</param-name>    //引用配置文件
<param-value>
classpath:spring-mvc.xml                                                 //配置文件的路径spring-mvc.xml   spring-mvc 里面配置的controller的信息,DispatcherServlet将对的请求交给controller。或者配置strus框架处理。
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>*.htmls</url-pattern>                 //配置可以被DispatcherServlet处理的后缀名为htmls.
</servlet-mapping>

 

<!-- 配置session超时时间,单位分钟 -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>

 

<!-- 配置之输入工程名是默认进入的页面 -->

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

 

三、创建第二步中需要的配置文件.xml

 

技术分享

创建tomcat  跑一下试试

 

 

 

技术分享

 发现报错

 

技术分享

 

接下来去pom.xml 配置tomcat插件、

<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9090</port>
<path>/GoTravel</path>
<uriEncoding>UTF-8</uriEncoding>
<server>tomcat7</server>
</configuration>
<!-- path 是访问应用的路径 port 是tomcat 的端口号 uriEncoding URL按UTF-8进行编码,这样就解决了中文参数乱码。
Server 指定tomcat名称。 -->
</plugin>
</plugins>

配置好后,还忘了一件事 还没有配置pom.xml的spring响应的包。所有的框架都是通过spring来管理的

配置spring的架包

<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>provided</scope>
</dependency>

 

配好后运行发现报错,

技术分享

这是因为在配置spring包的时候,版本信息通过${ }来取值的,所以还需要配置版本信息,好让${ }可以取到。

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.1.4.RELEASE</spring.version>
<hibernate.version>4.3.8.Final</hibernate.version>
<struts2.version>2.3.20</struts2.version>
<jackson.version>2.5.0</jackson.version>
</properties>

运行还是报错!!!!

技术分享

找不到过滤器对应的类,,这里先把它注释掉 暂时用不到,后面在解决,还有把还没有配置的spring.xml  spring-xml  spring-hibernate.xml 文件都注释掉

运行!!!成功了!!!

技术分享

 

技术分享

四、配置spring.xml 和spring-mvc.xml    实现SS结合。

spring.xml    主要配置的是扫描service层 dao层 自动创建对象。以及获取config.propertites配置文件。此文件配置数据的 如数据库连接 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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- 加载配置文件 -->

<context:property-placeholder location="classpath:config.properties"/>
<!-- 扫描service自动注入为bean -->
<context:component-scan base-package="com.hwua.service.impl" />

</beans>

 配置config.propertites文件。

#application configs

#jdbc druid config
validationQuery = SELECT 1
jdbc.url = jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8
jdbc.username = root
jdbc.password = root

#hibernate config
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = true
hibernate.format_sql = false
hibernate.hbm2ddl.auto = update

 

把前面注释掉的 取消掉,,

技术分享

运行不报错了。因为这里的filter 和listener 在spring基础上的,之前没有配置spring.xml 所以报错。

 接下来配置spring-mvc 文件

spring-mvc 用来扫描controller  ,spring-mvc用来将DispatcherServlet传递过来的请求,交给controller,然后将controller返回的modelandviews 添加前缀和后缀,返回.jsp页面给DispatcherServlet,然后返回给客户端。

1.添加头文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

。<bean></Bean>

。<bean></Bean>

。<bean></Bean>

</beans>
2.添加中间配置文件

<!-- 自动扫描controller包下的所有类,如果@Controller注入为bean -->
<context:component-scan base-package="club.itstu.controller" />

添加对应club.itstu.controlle包

<!-- 避免IE执行AJAX时,返回JSON出现下载文件 在pom.xml中配置json包 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">

 

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<!-- json转换器 -->//自动装换json格式
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>


<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>

<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views" />   //注意添加的前缀的正确
<property name="suffix" value=".jsp" />
</bean>

 测试一下 写一个测试test

技术分享

package ssh;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test")
public class TestController {

@RequestMapping("/test")
public String test(){
return "test";

}


}

发现报错了,,应该是之前注释掉的servlet ,,现在给恢复。

运行!!!

技术分享

到此ss就结合好了,

五、ssh大融合

.配置spring-hibernate.xml

spring-hibernate.xml的配置主要有如下内容:数据源,SessionFactory,事务等的配置

1.添加头文件

 

<?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">

。<beans></beans>

。<beans></beans>

。<beans></beans>

</beans>

 

2.配置中间的内容

<!-- 配置数据源 使用的是Druid数据源 -->   //复制过去即可
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />

<!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" />

<!-- 连接池最小空闲 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="33" />
<!-- 用来检测有效sql -->
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />
<!-- 监控数据库 -->
<property name="filters" value="mergeStat" />
</bean>

 

<!-- 配置hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 注入数据源 相关信息看源码 -->
<property name="dataSource" ref="dataSource" />
<!-- hibernate配置信息 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>      //这里是hibernate 的配置 ${}取值 从congfig.propertites 
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>


</props>

 

 

<!-- 扫描hibernate注解配置的entity -->
<!-- <property name="packagesToScan" value="org.andy.shop.entity" /> -->   //这里与实体类entity对应
<property name="mappingResources" >
<list>
<value>mapping/Student.hbm.xml</value>     //对应mapping/Student.hbm.xml文件
</list>
</property>

创建对应的entity 和Student.hbm.xml文件

 技术分享

 

<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

 

<!-- 配置事务增强处理Bean,指定事务管理器 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<!-- 配置详细事务处理语义 -->
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
<!-- 其他采用默认事务方式 -->
<tx:method name="*" />

</tx:attributes>
</tx:advice>

 

<!-- Spring aop事务管理 -->
<aop:config>
<!-- 配置切入点 -->
<aop:pointcut id="transactionPointcut"
expression="execution(* itstu.club.service.impl.*Impl.*(..))" />    /对应相应service层
<!-- 指定在txAdvice切入点应用txAdvice事务增强处理 -->
<aop:advisor pointcut-ref="transactionPointcut"
advice-ref="transactionAdvice" />
</aop:config>

 

六、配置entity和对应的Student.hbm.xml映射关系 及建表!!

 

 1.配置头文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

2.配置映射关系  <hibernate-mapping >~~~~~~~</hibernate-mapping> 

1.<class name="club.itstu.entity.Student" table="stu">  、、、、、、 </class>   //类名和表名称对应

创建好这个类和对应的表

 技术分享

 

 

<property name="name" column="name"></property>
<property name="age" column="age"></property>   //属性名和数据库列名对应

 

基本搭建完成,,后面开始测试。。







































































































































































































































































以上是关于ssh框架的搭建 详解的主要内容,如果未能解决你的问题,请参考以下文章

如何搭建SSH框架,myeclipse搭建SSH框架详解

SSH框架搭建过程详解

ssh框架的搭建 详解

SSH2框架搭建 和 配置文件详解

eclipse搭建ssh框架步骤

eclipse怎么搭建ssh框架