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. [正文部分 ...
随机推荐
- struts2的简单执行过程
struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题 Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程 1.首先我 ...
- 深入理解js中的apply、call、bind
概述 js中的apply,call都是为了改变某个函数运行时的上下文环境而存在的,即改变函数内部的this指向. apply() apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作 ...
- Next week plan
1.get a job 2.write a high performance chatroom with encryption. Use scala. Next Week turn to Rust
- 了解python,利用python来制作日常猜拳,猜价小游戏
初次接触python,便被它简洁优美的语言所吸引,正所谓人生苦短,python当歌.python之所以在最近几年越发的炽手可热,离不开它的一些特点: 1.易于学习:Python有相对较少的关键字,结构 ...
- Java URL类踩坑指南
背景介绍 最近再做一个RSS阅读工具给自己用,其中一个环节是从服务器端获取一个包含了RSS源列表的json文件,再根据这个json文件下载.解析RSS内容.核心代码如下: class Presente ...
- lua luaconf解读
定义了一些跟平台相关的宏,明确指出一些不推荐使用的函数,如lua_cpcall.lua_strlen
- ecshop根据订单号查询物流信息
目标:订单详情页可以根据订单查询当前物流信息. 效果图: 思路:点击后异步请求快递查询api,接受返回信息,拼接. 代码: admin下:order_info.htm //一:顶部插入jquery,在 ...
- 微信小程序支付及退款流程详解
微信小程序的支付和退款流程 近期在做微信小程序时,涉及到了小程序的支付和退款流程,所以也大概的将这方面的东西看了一个遍,就在这篇博客里总结一下. 首先说明一下,微信小程序支付的主要逻辑集中在后端,前端 ...
- NodeJS网络爬虫
原文地址:NodeJS网络爬虫 网上有很多其他语言平台版本的网络爬虫,比如Python,Java.那怎么能少得了我们无所不能的javascript呢
- JavaScript正则表达式(Regular Expression):RegExp对象
第一部分:新建正则表达式 JavaScript中正则表达式是参照Perl 5(一门历史很悠久的语言,现在tiobe编程语言排行依然在10名左右)建立的. 新建正则表达式的方法有两种: 1.使用字面量( ...