SSH简单项目
这是我学习SSH整合时的一个测试项目,代码比较简单
整个项目实现从数据库中取数据,在页面上显示。项目的结构如下:

(1)数据库设计
数据库使用的是student数据库中的一个数据库表grade,表的内容如下:

(2)建立一个web项目—>导包。

(3)新建配置文件,新建每一层的类。代码如下:
配置文件: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:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="dao.impl,service.impl,controller"></context:component-scan>
<!-- 连接数据库的配置 -->
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/student"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value="123"></property>
<property name="maxActive" value="100"></property>
<property name="maxWait" value="10000"></property>
</bean>
<!-- 连接数据库的配置 -->
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mappingResources">
<list>
<value>entity/Grade.hbm.xml</value>
</list>
</property>
</bean>
<!-- 配置sessionFactory --> <!-- 配置GradeDaoImpl的bean -->
<!-- <bean id="gradeDao" class="dao.impl.GradeDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property> 配置dao.Impl的依赖,它依赖于sessionFactory,配置注解后就不需要配置这个了
</bean>
<bean id="gradeService" class="service.impl.GradeServiceImpl">
<property name="gradeDao" ref="gradeDao"></property>
</bean>
配置GradeDaoImpl的bean 定义事务管理器
<bean name="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
>
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
定义事务管理器 配置事务增强
<tx:advice id="txAdvice" transaction-manager="txManager">
声明事务的规则——具体看我的另一篇博客SSH的整合
<tx:attributes>
<tx:method name="find*" read-only="true" propagation="SUPPORTS"/>
<tx:method name="query*" read-only="true" propagation="SUPPORTS"/>
<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
配置事务增强 定义切面
<aop:config>
定义切入点
<aop:pointcut expression="execution(* service.impl.*.*(..))" id="pointCut"/> <!-- execution(* 包名.类名.方法名(..)) -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/> </aop:config> --> </beans>
entity层:Grade.java
package entity;
public class Grade {
private int gradeId;
private String gradeName;
public int getGradeId() {
return gradeId;
}
public void setGradeId(int gradeId) {
this.gradeId = gradeId;
}
public String getGradeName() {
return gradeName;
}
public void setGradeName(String gradeName) {
this.gradeName = gradeName;
}
}
entity层:Grade.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-12-18 15:42:30 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="entity.Grade" table="GRADE">
<id name="gradeId" type="int">
<column name="GRADEID" />
<generator class="assigned" />
</id>
<property name="gradeName" type="java.lang.String">
<column name="GRADENAME" />
</property>
</class>
</hibernate-mapping>
dao层:GradeDao.java
package dao;
import java.util.List;
import entity.Grade;
public interface GradeDao {
/**
* 查询所有年级的方法
* @return
*/
List<Grade> query_Grade();
}
dao.Impl:GradeDaoImpl.java
package dao.impl; import java.util.List; import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import dao.GradeDao;
import entity.Grade; @Repository
public class GradeDaoImpl implements GradeDao { @Autowired
private SessionFactory sessionFactory; public List<Grade> query_Grade() { return sessionFactory.openSession().createQuery("from Grade").list();
} }
service:GradeService.java
package service;
import java.util.List;
import entity.Grade;
public interface GradeService {
/**
* 查询所有年级
* @return
*/
List<Grade> All_Grade();
}
service.impl:GradeServiceImpl.java
package service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import service.GradeService;
import dao.GradeDao;
import entity.Grade; @Service
public class GradeServiceImpl implements GradeService { @Autowired
private GradeDao gradeDao; public List<Grade> All_Grade() { return gradeDao.query_Grade();
} }
test:GradeTest.java(这是一个中间的测试类,可以不要)
package test; import java.util.List; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import service.GradeService;
import dao.GradeDao;
import entity.Grade; public class GradeTest { public static void main(String[] args) {
System.out.println(111);
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
GradeService gradeDao = (GradeService) act.getBean("gradeService");
List<Grade> list = gradeDao.All_Grade();
System.out.println(list.size());
}
}
controller层:MyAction.java
package controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import com.opensymphony.xwork2.ActionSupport; import service.GradeService;
import entity.Grade; @Controller
public class MyAction extends ActionSupport { @Autowired //自动装配,配置这个注解后,就不用在application设置依赖,spring会自动帮你配置依赖关系,但需要在web.xml中配置,具体看web.xml
private GradeService gradeService;
private List<Grade> list; public GradeService getGradeService() {
return gradeService;
} public void setGradeService(GradeService gradeService) {
this.gradeService = gradeService;
} public String show(){
System.out.println(111);
list=gradeService.All_Grade();
for (Grade grade : list) {
System.out.println(grade.getGradeName());
}
return "success";
} public List<Grade> getList() {
return list;
} public void setList(List<Grade> list) {
this.list = list;
} }
界面显示:NewFile.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript"></script>
</head>
<body>
<c:forEach items="${list}" var="l">
<p>${l.gradeId}  ${l.gradeName}</p>
</c:forEach>
</body>
</html>
struts配置文件: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>
<package name="default" namespace="/" extends="struts-default">
<action name="show" class="controller.MyAction" method="show">
<result name="success">/NewFile.jsp</result>
</action>
</package>
</struts>
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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>SSH_Framework</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <listener> <!-- 配置监听器 -->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <context-param> <!-- 配置一组键值对,与<listener>对应,当服务器启动时,服务器会读取web.xml配置,当读到<listener></listener>和<context-param></context-param>这两个节点的时候,容器会将这两个节点set到ServletContext(上下文对象)中,这样我们在程序中就能通过这个上下文对象去取得我们这个配置值。 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <filter> <!-- 配置一个过滤器 -->
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <!-- struts给出的一个过滤器,或自动把匹配到的地址信息交由struts的配置文件处理 -->
</filter>
<filter-mapping> <!-- 配置过滤映射,当页面的访问地址为.action结尾时,调用交由filter-name为struts的过滤器处理 -->
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
SSH简单项目的更多相关文章
- eclipse建立springMVC 简单项目
http://jinnianshilongnian.iteye.com/blog/1594806 如何通过eclipse建立springMVC的简单项目,现在简单介绍一下. 工具/原料 eclip ...
- Windows 8.1 应用再出发 (WinJS) - 创建一个简单项目
前面几篇我们介绍了如何利用 C# + XAML 完成Windows Store App 功能的实现,接下来的几篇我们来看看如何利用 Html + WinJS 来完成这些功能. 本篇我们使用WinJS ...
- SSH框架项目开发命名规范
SSH 框架项目开发命名规范 一.各层包及类命名规范 总体原则:包名所有字母小写,类名采用 "驼峰标识",具体如下: 1. Action 类 包命名规范:co ...
- asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说. 上篇讲到DbSession,现在接着往下讲. 首先,还是把一些类似的操作完善一下 ...
- IntelliJ IDEA 创建 Maven简单项目
创建简单Maven项目 使用IDEA提供的Maven工具,根据artifact创建简单Maven项目.根据下图操作,创建Maven项目. 使用IDEA提供的Maven工具创建的Maven简单项目目录结 ...
- springboot学习之构建简单项目搭建
概述 相信对于Java开发者而言,spring和springMvc两个框架一定不陌生,这两个框架需要我们手动配置的地方非常多,各种的xml文件,properties文件,构建一个项目还是挺复杂的,在这 ...
- 在eclipse 导入简单的Android studio 简单项目
前言: 现在Android studio版本已经去到2.0(我暂时用着开发者版本)了,但是还是和以前的版本一样卡. (因为我用了很多第三方的UI控件,导致在Android studio build一个 ...
- SSH简单Demo
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3 ...
- scrapy爬虫简单项目入门练习
[写在开头] scrapy环境配置配置好了之后,开始着手简单项目入门练习.关于环境配置见上一篇博客https://www.cnblogs.com/ljxh/p/11235079.html. [正文部分 ...
随机推荐
- python调用c代码
Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * de ...
- iOS11、iPhone X、Xcode9 适配
更新iOS11后,发现有些地方需要做适配,整理后按照优先级分为以下三类: 1.单纯升级iOS11后造成的变化: 2.Xcode9 打包后造成的变化: 3.iPhoneX的适配 一.单纯升级iOS11后 ...
- java中处理json各种各样转换方法
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.本文将快速讲解 JSON 格式,并通过代码示例演示如 ...
- react-router 3 中的 useRouterHistory(createHistory) 到了 react-router 4 变成了什么?
react-router 3 文档: https://github.com/ReactTraining/react-router/blob/v3/docs/API.md react-router 4 ...
- react 体验 react与vue的比较
用了 vue 大半年了,不过我在2016年暑假的时候就看到了 react 这个项目,有点想学习一番,之前学习的都是基础语法和一些基础用法吧,总的来说 mvvm 框架确实都很相似,会一个就可以了; 今天 ...
- phpcms v9 sql注入脚本
phpcms v9 SQL注入脚本 用法:python phpcms.py http://www.baidu.com import requests,sys,urllib url = sys.argv ...
- Unbuntu16.04安装搜狗拼音输入法
为了让自己的电脑相对安全一些,我安装了ubuntu的物理机 因为要经常输入汉字,我就在unbuntu里面安装了搜狗输入法 1.在搜狗输入法官网下载Linux版本的安装包:http://pinyin.s ...
- 高频dom操作和页面性能优化(转载)
作者:gxt19940130 原文:https://feclub.cn/post/content/dom 一.DOM操作影响页面性能的核心问题 通过js操作DOM的代价很高,影响页面性能的主要问题有如 ...
- java第一阶段测试
一.选择题(35题 * 2分)1. 下列代码编译和运行的结果是:C public static void main(String[] args) { String[] elements = { & ...
- 享元模式(Flyweight)
享元模式(Flyweight) 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. FlyWeightFactory负责创建和管理享元单元, ...