SSH框架整合案例

SSH框架实战项目:基于Java Web的经典应用 本文还有配套的精品资源,点击获取 简介:该项目基于Spring、Struts和Hibernate(SSH)技术栈,展示了如何将这些框架整合应用于Java Web开发。项目旨在提供一个学习平台,使初学者能够理解Spring的依赖注入与事务管理,掌握Struts的MVC架构和请求处理,以及了解Hibernate的ORM映射和数据库操作。项目包括源代码、配置文件、数据库脚本和文档... 阅读详情

一直都是用SSM框架搞东西,SSH框架看过一遍就没在用过,可以说十分的生疏。虽说现在SSH框架用的少了,但是你不能不会啊。秉承这个想法,今天把SSH框架整合了一遍,过程那个艰辛,全是泪,不说了。

这篇博客只阐述SSH框架怎么搭建,不对配置文件进行说明,因为我也不知道。不过我相信,随着知识的积累,这些配置属性都会融会贯通,在实践中学习,才是真正的了然于胸。

1、项目技术

maven+mysql+hibernate+spring+struts2

2、项目架构


3、配置文件

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn</groupId>
  <artifactId>SSH</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SSH Maven Webapp</name>
  <url>http://maven.apache.org</url>
<properties>
		<!-- 文件拷贝编码 -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!-- 输出编码 -->
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<!-- 编译编码 -->
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<!-- junit -->
		<junit.version>4.12</junit.version>
		<!-- log4j -->
		<log4j.version>1.2.17</log4j.version>
		<!-- servlet-api -->
		<servlet-api.version>2.5</servlet-api.version>
		<!-- mysql驱动 -->
		<mysql.version>5.1.24</mysql.version>
		<!-- struts2 -->
		<struts.version>2.3.14</struts.version>
		<!-- spring -->
		<spring.version>4.3.7.RELEASE</spring.version>
		<!-- hibernate -->
		<hibernate.version>4.2.0.Final</hibernate.version>
	</properties>


	<dependencies>
		<!-- jUnit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

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

		<!-- log4j 日志 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>

		<!-- servlet API -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${servlet-api.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- MySQL驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>

		<!-- struts2 -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>${struts.version}</version>
			<exclusions>
				<exclusion>
					<groupId>javassist</groupId>
					<artifactId>javassist</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-convention-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>

		<!-- spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</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-context-support</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-beans</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-expression</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<scope>test</scope>
		</dependency>
		<!-- Spring AOP 切入点所需 -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.10</version>
		</dependency>

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

		<!-- c3p0 -->
		<dependency>
			<groupId>c3p0</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.1.2</version>
		</dependency>

		<!-- gson -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.0</version>
		</dependency>

	</dependencies>
	<build>
		<finalName>SSH</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

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


	<welcome-file-list>
		<!--web项目欢迎页面的设置 -->
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	
	<!-- 配置openSessionInView过滤器,解决Hibernate懒加载问题 -->
	<filter>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>OpenSessionInViewFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
		<init-param>
			<param-name>config</param-name>
			<!-- 改变struts配置文件的相对位置 -->
			<param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value>
		</init-param>
	</filter>
	<!-- 过滤后缀 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--设置spring监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!--设置spring配置文件的位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
</web-app>

applicationContext.xml

<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<!-- 自动扫描与装配bean -->
	<context:annotation-config />
	<context:component-scan base-package="com.yu.action,com.yu.dao,com.yu.entity,com.yu.service,test,com.yu.util"></context:component-scan>

	<!-- 加载外部的properties配置文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />

	<!-- 配置数据库连接池(c3p0) -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 基本信息 -->
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<!-- 其他配置 -->
		<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
		<property name="initialPoolSize" value="3"></property>
		<!--连接池中保留的最小连接数。Default: 3 -->
		<property name="minPoolSize" value="3"></property>
		<!--连接池中保留的最大连接数。Default: 15 -->
		<property name="maxPoolSize" value="5"></property>
		<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
		<property name="acquireIncrement" value="3"></property>
		<!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 
			0 -->
		<property name="maxStatements" value="8"></property>
		<!-- maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 
			0 -->
		<property name="maxStatementsPerConnection" value="5"></property>
		<!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
		<property name="maxIdleTime" value="1800"></property>
	</bean>

	<!-- 配置SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
	</bean>

	<!-- 配置声明式的事务管理(采用基于注解的方式) -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<tx:annotation-driven transaction-manager="transactionManager" />

</beans>  

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE hibernate-configuration PUBLIC  
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
<hibernate-configuration>
<session-factory>
	<!-- 配置Hibernate:属性配置参考  Hibernate发型包\project\etc\hibernate.properties -->
	<!-- JDBC的基本链接 -->
	<!-- <property name="hibernate.connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">yuwen</property>
	<property name="connection.url">
		jdbc:mysql://localhost:3306/test
	</property> -->
	<!-- 配置数据库方言 -->
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<!-- 根据映射产生表结构的类型:  
		create-drop:木有表结构创建,下次启动时删除重新创建。适合学习阶段  
		create:只做创建  
		update:探测表结构够的变化,对于数据库没有的,进行更新操作。适合学习阶段  
		validate:对比与数据库的结构  
	-->
	<property name="hibernate.hbm2ddl.auto">update</property>
	<!-- 显示sql语句及格式:开发调试阶段非常有用 -->
	<property name="hibernate.show_sql">true</property>
	<property name="hibernate.format_sql">true</property>

	<!-- 告知映射文件 -->
	<mapping resource="com/yu/entity/User.hbm.xml" />
	<mapping resource="com/yu/entity/Order.hbm.xml" />

</session-factory>
</hibernate-configuration>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
jdbc.username=root
jdbc.password=yuwen

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.i18n.encoding" value="UTF-8"/>
    <!-- 上传的全部图片的最大限制-->
    <constant name="struts.multipart.maxSize" value="1024102400"/>


    <!--Action的配置-->
    <package name="default" extends="struts-default" namespace="/">
        <action name="success" class="com.yu.action.UserAction" method="success" >
            <result name="success">/WEB-INF/jsp/success.jsp</result>
        </action>
    </package>


    <!--设置缓存文件的保存地址-->
    <constant name="struts.multipart.saveDir" value="d:/temp"></constant>
</struts> 

4、类

实体类

user.java
package com.yu.entity;

public class User {
	@Override
	public String toString() {
		return "User [uId=" + uId + ", uName=" + uName + ", uPass=" + uPass + "]";
	}

	private Integer uId;
	private String uName;
	private String uPass;

	public String getuPass() {
		return uPass;
	}

	public void setuPass(String uPass) {
		this.uPass = uPass;
	}

	public Integer getuId() {
		return uId;
	}

	public void setuId(Integer uId) {
		this.uId = uId;
	}

	public String getuName() {
		return uName;
	}

	public void setuName(String uName) {
		this.uName = uName;
	}

	public User() {

	}
}

Order.java

package com.yu.entity;

public class Order {
	private Integer oId;
	private String oName;
	private Double oPrice;

	public Integer getoId() {
		return oId;
	}

	public void setoId(Integer oId) {
		this.oId = oId;
	}

	public String getoName() {
		return oName;
	}

	public void setoName(String oName) {
		this.oName = oName;
	}

	public Double getoPrice() {
		return oPrice;
	}

	public void setoPrice(Double oPrice) {
		this.oPrice = oPrice;
	}

	public Order() {

	}
}

实体类对应的映射文件:

User.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.yu.entity.User" table="user">
        <id name="uId" type="java.lang.Integer">
            <column name="uId" />
            <generator class="increment" />
        </id>
        <property name="uName" type="java.lang.String">
            <column name="uName" length="255" />
        </property>
        <property name="uPass" type="java.lang.String">
            <column name="uPass" length="255" />
        </property>
    </class>
</hibernate-mapping>

Order.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.yu.entity.Order" table="order">
        <id name="oId" type="java.lang.Integer">
            <column name="oId" />
            <generator class="increment" />
        </id>
        <property name="oName" type="java.lang.String">
            <column name="oName" length="255" />
        </property>
        <property name="oPrice" type="java.lang.String">
            <column name="oPrice" length="255" />
        </property>
    </class>
</hibernate-mapping>

dao层

接口
package com.yu.dao;

import java.util.List;

import com.yu.entity.User;

public interface UserDao {
	List<User> getAllUser();
}

实现类

package com.yu.dao.imp;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.stereotype.Component;

import com.yu.dao.UserDao;
import com.yu.entity.User;
import com.yu.util.BaseDao;

@Component
public class UserDaoImp  extends BaseDao implements UserDao{

	
	@Override
	public List<User> getAllUser() {
		// TODO Auto-generated method stub
		return (List<User>) getHibernateTemplate().find("from User");
	}
}

service层

接口

package com.yu.service;

import java.util.List;

import com.yu.entity.User;

public interface UserService {
	List<User> getAllUser();
}

实现类

package com.yu.service.imp;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yu.dao.UserDao;
import com.yu.entity.User;
import com.yu.service.UserService;

@Service("userService")
public class UserServiceImp implements UserService {
	
	@Autowired
	private UserDao userDao;

	@Override
	public List<User> getAllUser() {
		// TODO Auto-generated method stub
		return userDao.getAllUser();
	}

}

action

package com.yu.action;

import java.util.List;

import javax.annotation.Resource;

import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;

import com.opensymphony.xwork2.ActionSupport;
import com.yu.entity.User;
import com.yu.service.UserService;

public class UserAction extends ActionSupport {
	@Resource
	private UserService userService;

	public String success() {
		System.out.println(1);
		List<User> lis = userService.getAllUser();
		for (User user : lis) {
			System.out.println(user.getuName());
		}
		return "success";
	}
}

util

package com.yu.util;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;

public class BaseDao extends HibernateDaoSupport {
	@Autowired
	public void setSessionFactoryOverride(SessionFactory sessionFactory) {

		super.setSessionFactory(sessionFactory);
	}
}

5.jsp

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'MyJsp.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    This is my JSP pawerwerge. <br>
    <a href="success">123</a>
  </body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'success.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    success
  </body>
</html>

6.数据库

/*
Navicat MySQL Data Transfer

Source Server         : 123
Source Server Version : 50610
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50610
File Encoding         : 65001

Date: 2018-05-02 17:20:00
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `uId` int(11) NOT NULL AUTO_INCREMENT,
  `uName` varchar(255) DEFAULT NULL,
  `uPass` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`uId`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

7.运行结果

成功!欢迎转载评论

SSH框架整合中lib目录下的关键jar包 本文还有配套的精品资源,点击获取 简介:SSH整合是指Spring、Struts2和Hibernate三大Java开源框架的集成,用于Java企业级应用开发。这一整合涉及的lib目录下包含多个关键jar包,每种jar包都承担特定的角色:Spring框架负责依赖注入和面向切面编程;Struts2框架处理Web应用的控制层;Hibernate框架管理数据持久化。文章将详细介绍这... 阅读详情

相关推荐

SSH框架实例_非常实用

示例详细地SSH实现用户登录,通过此例子可以了解springMVC基本的控制流程和思想。开发环境:MyEclipse2014,MySql,struts 2.1,spring 3.1, hibernate 3.2

ssh框架整合完整实例

前排提示博文较长1.SSH框架结构 action,biz,dao之间的依赖关系由spring维护,动态注入 sping以AOP(面向切面的方式)实现了事务管理器。 spring整合Hibernate时,spring替代实现HibernateSessionFacctory和dao spring整合struts时,代替实现Action 开发过程中的所有对象由spring控制管理 2. 项目流程2.1框架

shinerio的博客 2万+

java框架ssh框架项目案例

ssh框架项目案例,主要是Struts2+Hibernate+Spring框架集合,用于学习使用。

SSH 集合框架应用实例

SSH 集合框架应用实例 本课程是基于 实验楼 线上环境制作的,因此文档叙述和截图均与其有关。使用其他实验环境也没有太大影响,实验步骤是类似的。 一、实验说明及介绍 1. 环境介绍 本实验环境采用带桌面的 Ubuntu Linux 环境,实验中可能会用到桌面上的程序: XfceTerminal:Linux 命令行终端,打开后会进入 Bash 环境,可以

shenghua 948

ssh框架完整免费实例

ssh框架完整实例,包含一系列ssh实现操作,让你熟悉ssh框架的使用,安全可用!安全可用!安全可用!安全可用!安全可用!

ssh框架实现登录实例

ssh框架实现登录实例

SSH框架总结(框架分析+环境搭建+实例源码下载)

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。 Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用H...

星.云计算 3103

Netapp FAS2750热备盘替换失败问题分析与解决

本文深入分析了Netapp FAS2750存储系统中热备盘替换失败的故障现象,揭示了磁盘分区属主不匹配导致数据同步无法启动的根本原因。通过详细的排查步骤和解决方案,帮助运维人员快速恢复aggr状态,并提供了长期预防措施和最佳实践建议,确保存储系统的高可用性。

weixin_33737774的博客 401

ssh框架案例

SSH是 struts2+spring+hibernate的一个集成框架 使用Struts2作为系统的整体基础架构,负责MVC的分离,在Struts2框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts2和hibernate 其中:Hibernate的DAO层开发比MyBatis简单,不需要去自己写sql语句,而Mybatis需要维护S...

zhh_1998的博客 552

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 512

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 553

SSH框架整合的一个小案例

以下内容来自慕课网的课程:基于SSH实现员工管理系统之框架整合篇(不同的是我用的jar包都是最新版本) 一、创建项目引入jar包 1、下载包(我选用的是Hibernate5.2.10+Struts2.3.33+Spring4.3.5) Hibernate包下载地址: http://hibernate.org/orm/ Struts2下载地址: http://struts.apache.or...

qq_36990659的博客 3499

(详细教程)opencv+pycharm+笔记本摄像头 做一个人脸识别

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、安装opencv-python 这里推荐使用pycharm直接安装opencv-python 打开文件——设置——python解释器——点击+号 搜索opencv-python,点击安装包,等待片刻即可安装好 检查是否安装好,新建一个项目输入以下代码,若无报错则安装好 import cv2 二、准备分类器 咱们使用opencv官方提供的分类器,包括面部识别,侧...

qq_52852432的博客 1万+

SSH三大框架整合小案例

一、创建项目引入jar包 1、下载包(我选用的是Hibernate5.2.10+Struts2.3.33+Spring4.3.5) Hibernate包下载地址: http://hibernate.org/orm/ Struts2下载地址: http://struts.apache.org/download      Spring下载地址: http://repo.spri

阶段丶成长的博客 1万+

ArcGIS遥感影像分类技术在植被覆盖度计算中的应用

本文详细介绍了如何利用ArcGIS遥感影像分类技术高效计算植被覆盖度。通过数据准备、监督与非监督分类方法详解,并结合制表分析与栅格计算器进行面积统计,最终实现从分类图到覆盖度百分比的全流程自动化与可视化,为生态评估与规划提供精准数据支持。

weixin_29091445的博客 422

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 413

SSH三大框架整合案例

SSH三大框架的整合SSH三个框架的知识点一、Hibernate框架1. Hibernate的核心配置文件    1.1 数据库信息、连接池配置    1.2 Hibernate信息    1.3 映射配置    1.4 Hibernate核心配置文件如果单纯使用Hibernate框架,核心配置文件名称hibernate.cfg.xml并且一定要放在src下面,而hibernate和spring整...

小山博客 477

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3105

SSH2框架整合小案例

SSH2框架整合小案例 2017-07-05 00:34 152人阅读 评论(0) 收藏 举报 分类: SSH2整合 目录(?)[+] StrutsSpringHibernate整合 一创建web工程搭建Struts框架开发环境二搭建Hibernate开发环境三搭建Spring开发环境四Spring与Hibernate整合五S

许文杰的博客 555

Windows 10 本地硬盘变成了可弹出磁盘

今天新装了系统, 电脑是一个SSD+HHD, 没想到装好之后右下角显示可安全删除设备, 两个硬盘在那里. 这还得了. 查了一下午, 大致知道了是什么问题. Standard SATA AHCI controller使用高性能的硬盘模式就会把硬盘看作是一个可热插拔的存储器, 所以自然就会显示可弹出. 如果你的BIOS支持关闭HotSwap或者HotPlug, 那么直接关闭就可以了. 或者你直接在BIOS里把磁盘模式改为IDE, 不过这样就发挥不好你SSD的高性能了. 还有一种解决方法, 就是手动让系统把这两个

落日之城 4万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

maven父子模块,SSH框架整合,登录案例。适合初学者!

maven父子模块项目整合SSH框架: 首先,准备工作及环境如下: 创建maven项目,前提要配置好了maven的环境变量及在 ide 中配置了maven 。 创建父项目,父项目的主要作用是写一些所有项目都能公用的东西,例如需要导入的包。或者是pom文件需要写的东西,这些东西如果每次创造项目都要写一次的话,浪费了很多时间。 创建子项目,我们整合一般利用的都是MVC设计模式,所以我们需要三个子模块...

weixin_43226447的博客 221

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ssh整合案例

入职三个月有余了,做javaee开发,一直想写个整合ssh的案例,今日才写,是在太过惫懒,惭愧。

lifelovesky的专栏 705

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ssh框架整合详解(jar包+代码+小案例)

1.导入相关jar包(基础jar包42个): 如果需要其他的jar包自行导入即可 2.书写Struts配置文件和web.xml文件 进行Struts2和spring整合 3.书写beans.xml文件 hibernate与spring整合的第一种方式(不需要hibernate.cfg.xml) &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;

红星小学扛把子! 579
上一篇: "Could not resolve placeholder"解决方案
下一篇: Struts2的Action接收jsp页面表单数据为null的原因及解决方法
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值