分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报

好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了,一时半会各种异常出来,经过一番挣扎后,终于搞出来了雏形,

下面是我做整合框架的笔记,如果大家开发过程中又遇到的情况,可以参考下

首先是包的结构,(命名不算正规哈~,临时写的仓促了点)

框架是基于JAR包的基础上构建的,所以必须必备的jar包必须先下好,

如图:

没有的可以在本文源代码里下:

搭建框架:

修改web.xml, 加入 struts配置

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<welcome-file-list>

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

</welcome-file-list>

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

</filter-mapping>

</web-app>

创建struts .xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="struts2" extends="struts-default">

<action name="login" class="test.action.loginAction">

<result name="success" type="redirect">index.jsp</result>

<result name="input">login.jsp</result>

<result name="error">login.jsp</result>

</action>

</package>

</struts>

接下来我们创建一个 测试用的ACTION类,loginAction

package test.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

public String username;

public String password;

public String execute(){

if(!username.equals("admin")){

super.addFieldError("username", "用户名错误!");

return ERROR;

}

if(!password.equals("001")){

super.addFieldError("password", "密码错误!");

return ERROR;

}

return SUCCESS;

}

public void validate(){

if(username==null||username.length()==0){

super.addActionError("用户名不能为空");

}

if(password==null||password.length()==0){

super.addActionError("密码不能为空");

}

}

}

为了方便我们调试strut是否有效,我们创建一个login.jsp  用于测试

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>登录</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

</head>

<body>

<s:form name="form1" action="login" >

<s:textfield  name="username" label="username" ></s:textfield>

<s:password name="password" label="password" ></s:password>

<s:submit label="submit"></s:submit>

</s:form>

<s:actionerror/>

</body>

</html>

修改下index.jsp 页面 登陆成功则友好提示一下

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<%

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 'index.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">

</head>

<body>

login success. <br>

</body>

</html>

使用tomcat加载项目,如果启动时候不爆出异常,说明strust 基本配置完成,我们进入页面

如果登陆成功则转到

Index.jsp

接下配置spring 和hibernate

重新回归到  web.xml

我们在其中添加,spring的相关配置

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

classpath:spring/applicationContext*.xml

</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

创建applicationContext.xml 文件 我们在此使用注解驱动(其实说真的,spring到后面不用注解去写,也就失去它本身的意义,精髓就在于注解的简洁和易用)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

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-2.5.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<aop:aspectj-autoproxy />

<context:annotation-config></context:annotation-config>

<context:component-scan base-package="test" />

<bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="configLocation">

<value>classpath:spring/hibernate.cfg.xml</value>

</property>

</bean>

<!-- 配置事务管理器 -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">

<property name="sessionFactory">

<ref bean="sessionFactory" />

</property>

</bean>

<tx:advice id="smAdvice" transaction-manager="transactionManager" >

<tx:attributes>

<tx:method name="save*" propagation="REQUIRED" />

<tx:method name="del*" propagation="REQUIRED" />

<tx:method name="update*" propagation="REQUIRED" />

</tx:attributes>

</tx:advice>

<aop:config>

<aop:pointcut id="smMethod" expression="execution(* test.service.impl.*.*(..))" />

<aop:advisor pointcut-ref="smMethod" advice-ref="smAdvice" />

</aop:config>

</beans>

创建hibernate.cfg.xml  (用户名密码,可以自己修改一下)

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql://localhost/test?characterEncoding=utf-8</property>

<property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property>

<property name="connection.username">root</property>

<property name="connection.password">123456</property>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property>

<mapping resource="test/hibernate/TUser.hbm.xml" />

</session-factory>

</hibernate-configuration>

创建相关DTO类,以及hbm.xml 配置文件

TUser.java

package test.hibernate;

public class TUser implements java.io.Serializable {

private int userid ;

private String username;

private String allname;

private String address;

public String getUsername() {

return this.username;

}

public void setUsername(String username) {

this.username = username;

}

public String getAllname() {

return this.allname;

}

public void setAllname(String allname) {

this.allname = allname;

}

public String getAddress() {

return this.address;

}

public void setAddress(String address) {

this.address = address;

}

public int getUserid() {

return userid;

}

public void setUserid(int userid) {

this.userid = userid;

}

}

TUser.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">

<hibernate-mapping>

<class name="test.hibernate.TUser" table="tuser">

<id name="userid" type="java.lang.Integer" column="userid">

<generator class="increment"></generator>

</id>

<property name="username" type="string" column="username" />

<property name="allname" type="string" column="allname" />

<property name="address" type="string" column="address" />

</class>

</hibernate-mapping>

由于测试关系,我们在这里就省略了DAO层,直接写service层类去测试 ,采用注解标记

创建相关service 接口以及实现类

IUserService.java

package test.service.imp;

import java.util.List;

import test.hibernate.TUser;

public interface IUserService {

public void saveTuser(TUser user);

public List<TUser> getUserById( String id);

}

UserServiceImpl.java

package test.service.impl;

import java.sql.SQLException;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

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

import org.springframework.orm.hibernate3.HibernateCallback;

import org.springframework.orm.hibernate3.HibernateTemplate;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

import test.hibernate.TUser;

import test.service.imp.IUserService;

@Service("userServiceImpl")

public class UserServiceImpl implements IUserService {

@Resource(name = "hibernateTemplate")

private HibernateTemplate hibernateTemplate;

public void saveTuser(TUser user) {

hibernateTemplate.save(user);

hibernateTemplate.flush();

}

@SuppressWarnings("unchecked")

@Transactional(propagation=Propagation.REQUIRED)

public List<TUser> getUserById(String id) {

final String ids = id;

//List<TUser> list = hibernateTemplate.find("from TUser where userid = ?");

List<TUser> list =hibernateTemplate.executeFind(new HibernateCallback() {

public List<TUser> doInHibernate(Session session) throws HibernateException,

SQLException {

Query query =  (Query) session.createQuery("from TUser where userid = ? ");

query.setString(0, ids);

return  query.list() ;

}

});

return list;

}

}

接下来我们写一个main 主类来测试我们的spring 和hibernate

SpringTest.java

package test.spring;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.stereotype.Component;

import test.hibernate.TUser;

import test.service.imp.IUserService;

@Component("springTest")

public class SpringTest {

@Resource(name = "userServiceImpl")

private IUserService userService ;

public static void main( String[] args ) {

//加载spring配置文件,初始化IoC容器

ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext.xml");

//从容器 接管Bean

//        TUser user = (TUser) ac.getBean("TUser");

//输出欢迎信息

//        System.out.println( "Hello:" + user.getUsername() + ";u is in " + user.getAddress() + " ; and b is  " + user.getAllname() );

//        SessionFactory ss = (SessionFactory) ac.getBean("sessionFactory");

//        HibernateTemplate ht = new HibernateTemplate(ss);

//        HibernateTemplate ht = (HibernateTemplate) ac.getBean("hibernateTemplate");

//

//        List<TUser> list =    ht.find("from TUser ");

SpringTest st =(SpringTest) ac.getBean("springTest");

//        TUser tu = new TUser();

//        tu.setAddress("河西");

//        tu.setAllname("河西走廊");

//        tu.setUserid(45);

//        tu.setUsername("故乡");

//

//        st.userService.saveTuser(tu);

List<TUser> list = st.userService.getUserById("4");//ID在数据库内找到相应的

for(TUser xx : list){

System.out.println(xx.getAddress()+"||"+xx.getAllname()+"||"+xx.getUsername());

}

}

}

如果出现下面提示,说明你的配置已经完成

SSH框架搭建 笔记 (含spring注解驱动)的更多相关文章

  1. SSH框架搭建笔记

    1.建立一个web项目,设置编码格式,建立src下的包,建立资源文件夹 2.加入Spring运行必须的jar包(5个jar包) spring-beans-4.1.4.RELEASE.jar sprin ...

  2. SSH框架搭建步骤总结以及Hibernate二级缓存,查询缓存

    二级缓存.查询缓存 一级缓存: 默认启动,生命周期是和session同步的,session独享 二级缓存: 需要加载配置信息,生命周期是和应用服务器同步,session共享 1:在hibernate. ...

  3. ssh框架搭建的基本步骤(以及各部分作用)

    ssh框架搭建的基本步骤(以及各部分作用)     一.首先,明确spring,struts,hibernate在环境中各自的作用.   struts: 用来响应用户的action,对应到相应的类进行 ...

  4. SSH框架搭建 详细图文教程

    转载请标明原文地址 一.什么是SSH? SSH是JavaEE中三种框架(Struts+Spring+Hibernate)的集成框架,是目前比较流行的一种Java Web开源框架. SSH主要用于Jav ...

  5. SSH框架搭建详细图文教程

    转载请标明原文地址:http://www.cnblogs.com/zhangyukof/p/6762554.html 一.什么是SSH? SSH是JavaEE中三种框架(Struts+Spring+H ...

  6. 0、Spring 注解驱动开发

    0.Spring注解驱动开发 0.1 简介 <Spring注解驱动开发>是一套帮助我们深入了解Spring原理机制的教程: 现今SpringBoot.SpringCloud技术非常火热,作 ...

  7. 【spring 注解驱动开发】spring事务处理原理

    尚学堂spring 注解驱动开发学习笔记之 - 事务处理 事务处理 1.事务处理实现 实现步骤: * 声明式事务: * * 环境搭建: * 1.导入相关依赖 * 数据源.数据库驱动.Spring-jd ...

  8. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】

    经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...

  9. 转 SSH框架搭建详细图文教程

    原址:http://blog.sina.com.cn/s/blog_a6a6b3cd01017c57.html 什么是SSH? SSH对应 struts spring hibernatestruts ...

随机推荐

  1. 进程的用户ID

    进程创建时,系统会在进程上设置几个用户相关的ID 实际用户ID,实际用户组ID,系统根据当前会话登陆的用户信息设置 有效用户ID,有效用户组ID,系统根据所打开的执行文件的模式位,进行设置.set_u ...

  2. 吴裕雄 python 神经网络——TensorFlow 输入文件队列

    import tensorflow as tf def _int64_feature(value): return tf.train.Feature(int64_list=tf.train.Int64 ...

  3. ISE主备注册和同步

    Synchronize Primary and Secondary Cisco ISE Nodes You can make configuration changes to Cisco ISE on ...

  4. WLC-安装license

    在CLI界面安装licenseStep 1 Install a license on the controller by entering this command:①license install  ...

  5. 判断一个数组是否包含一个指定的值 includes-ES6

    var array1 = [1, 2, 3]; console.log(array1.includes(2));  // trueconsole.log(array1.includes(2, 5)); ...

  6. php封装的mysqli类完整实例

    本文实例讲述了php封装的mysqli类.分享给大家供大家参考,具体如下:类: <?php header('content-type:text/html;charset=utf-8'); /* ...

  7. 解决:mui 的 选项卡 + 下拉刷新 功能,在其中嵌入 iframe 后,在 iphone 的情况下,iframe 的内容不能滚动,只显示第一屏内容。

    我所遇到的情况是,使用 mui 的 选项卡 + 下拉刷新 功能时,其中有2个页面是嵌入了别的网站的页面,而别个几个是通过 ajax 加载本网站的数据.然后 在其中嵌入 iframe 后,在 iphon ...

  8. 1012 The Best Rank (25分) vector与结构体排序

    1012 The Best Rank (25分)   To evaluate the performance of our first year CS majored students, we con ...

  9. WPS Linux 2019领先的背后

    导读 过去很多年,作为民族办公领导品牌,金山办公持续高度重视对基础办公软件发展的布局和投入,这其中包括大量的研发资金.人力投入,真正做到了超过30年不忘初心,坚守办公阵地. 早在2019年3月26日, ...

  10. Linux命令:sed命令

    sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏 ...