SSH 框架实例 操作
来源:互联网 发布:淘宝推广团队 编辑:程序博客网 时间:2024/06/11 04:53
这个实例采用常用的数据层(dao),业务层(service),展现层(web)三层结构。具体框架图如下:
具体的 spring,hibernate,struts的框架如何搭建起来的,下次我们再具体分析,下面首先看个简单的实例,本例采用SOA思想 (所有操作面向服务(接口)):
一. 首先我们通过 hibernateHelp工程,利用MYeclipse 插件,生成 相对与数据库TEST中test表的POJO类以及对应的hbm.xml文件,并且将其拷贝到basic工程中的dao包中,如下图:
二.dao 数据层框架中创建针对Test POJO类的操作接口TestDao.java (BaseDao.java是所有数据层操作接口的父类),TestDao.java 简单代码如下:
package com.sac.dao;
import java.util.List;
import com.sac.dao.model.Test;
public interface TestDao extends BaseDao {
public Test findbyid();
public List queryAll();
public List querybyhql(Integer first,Integer number);
public Integer getQueryNumber();
public void deleteById(String[] str);
}
然后是对接口的hibernate 实现,在hibernate包下,代码如下:
package com.sac.dao.hibernate;
import java.util.List;
import org.hibernate.Query;
import com.sac.dao.TestDao;
import com.sac.dao.model.Test;
public class TestDaoimpl extends BaseDaoImpl implements TestDao {
public Test findbyid() {
return (Test)getHibernateTemplate().get(Test.class,new Integer(1));
}
public List queryAll(){
String hql="FROM Test";
return getHibernateTemplate().find(hql);
}
public List querybyhql(Integer first,Integer number){
String hql="from Test";
Query q=getSession().createQuery(hql);
q.setFirstResult(first);
q.setMaxResults(number);
return q.list();
}
public Integer getQueryNumber(){
String hql="FROM Test";
Query q=getSession().createQuery(hql);
return q.list().size();
}
public void deleteById(String[] str){
for(int i=0;i<str.length;i++){
// Integer j=Integer.parseInt(str[i]);
String hql = "DELETE Test as T WHERE T.id=?" ;
Query q = getSession().createQuery(hql) ;
q.setString(0,str[i]) ;
q.executeUpdate() ;
}
}
}
这里我们就完成了 数据层的接口。那么如何在业务层调用这些接口呢。 这里就涉及到了 spring的 依赖注入(IOC),本实例中所有 配置文件 都在WebRoot包下,如图:
这里是对数据层(dao)的配置:代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置Dao-->
<bean id="userDao" class="com.sac.dao.hibernate.UserDAOImpl"
autowire="byName" />
<bean id="testDao" class="com.sac.dao.hibernate.TestDaoimpl"
autowire="byName" />
</beans>
当创建名为testDao的对象(其实他是一个接口)的时候,spring就会自动注入这个接口的对象实例。这样就完成了数据层的所有操作!
三. 此时业务层的某个业务要调用数据层的接口。例如:对test表进行一些增删改查的操作 接口 如下图:
首先创建业务层操作接口TestService.java,代码如下:
package com.sac.service;
import java.util.List;
import com.sac.dao.model.Test;
import com.sac.dao.model.User;
public interface TestService {
public Test loadTest(Integer id);
public List loadAllTest();
public List loadTestAsPage(Integer first,Integer number);
public Integer gettotal();
public void saveTestr(Test user);
public void updateTest(Test user);
public void removeTest(String[] user);
public void doSomeThing();
}
然后是对接口的实现TestServiceImpl:代码如下:
package com.sac.service.impl;
import java.util.List;
import com.sac.dao.TestDao;
import com.sac.dao.UserDao;
import com.sac.dao.model.Test;
import com.sac.service.TestService;
public class TestServiceimpl implements TestService {
private TestDao testDao;
public void setTestDao(TestDao testDao) {
this.testDao = testDao;
}
public void doSomeThing() {
}
public List loadAllTest() {
return testDao.queryAll();
}
public Test loadTest(Integer id) {
return testDao.findbyid();
}
public List loadTestAsPage(Integer first, Integer number) {
return testDao.querybyhql(first, number);
}
public Integer gettotal() {
Integer i=testDao.getQueryNumber();
return i;
}
public void removeTest(String[] user) {
testDao.deleteById(user);
}
public void saveTestr(Test user) {
}
public void updateTest(Test user) {
}
}
这里我们只实现了某几个操作
同理,我们在展现层调用这些接口,进行展现层的操作,配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置Service-->
<bean id="userService" class="com.sac.service.impl.UserServiceImpl"
autowire="byName">
</bean>
<bean id="testService" class="com.sac.service.impl.TestServiceimpl"
autowire="byName">
</bean>
</beans>
四. 下面是展现层利用struts的 MVC 模式 对业务层进行接口调用:
首先我们利用MYeclipse自带的功能 创建一个 action具体的struts我们在下次的文章中具体分析:action包如下图:
这里我们如果是团队开发就需要将ACTION建在我们自己的model下,如图。那么在页面上如何将请求交给特定的action呢。这里就涉及到struts的控制问题。其实这里有两种方法:
1.我们直接交给 struts ,那么只要在struts配置文件中配置:代码如下:
<action path="/test"
type="com.sac.web.action.moudle1.TestAction" />
2.我们也利用Spring的工厂进行依赖注入,本实例采用这个方法,代码如下
2.1 struts配置代码如下:
<action path="/test"
type="org.springframework.web.struts.DelegatingActionProxy" /> //将请求交给spring容器管理
2.2 在spring中增加action的配置文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置Action -->
<bean name="/user"
class="com.sac.web.action.model1.UserAction" autowire="byName">
</bean>
<bean name="/test"
class="com.sac.web.action.moudle1.TestAction" autowire="byName">
</bean>
<bean name="/test_delete"
class="com.sac.web.action.Test_deleteAction" autowire="byName">
</bean>
</beans>
我们创建action的代码,这里我们用到了ext2.0的页面实现和json的数据格式:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.sac.web.action.moudle1;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.sac.dao.model.Test;
import com.sac.service.TestService;
public class TestAction extends Action {
protected final Log log = LogFactory.getLog(getClass());
private TestService testService;
public void setTestService(TestService testService) {
this.testService = testService;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
System.out.println(testService.loadTest(1).getName());
System.out.println(request.getParameter("start"));
Integer i=Integer.parseInt(request.getParameter("start"));
Integer h=Integer.parseInt(request.getParameter("limit"));
Integer j=testService.gettotal();
List TestList=testService.loadTestAsPage(i, h);
JSONArray jsonArray = JSONArray.fromObject( TestList);
String jsonArraypage="{/"count/":"+j+",/"dataSet/":"+jsonArray+"}";
System.out.println(jsonArraypage);
response.setContentType("text/json; charset=GBK");
try {
response.getWriter().print(jsonArraypage);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return null;
}
}
这里我们就完成了一个简单的SSH 框架的实现 读者可以在浏览器中敲入:http://localhost:8080/basic/test.do 请求进行测试。
呵呵, 这是本人的第一篇 文章 有错误的地方 请给予帮助,本人邮箱:suishi666881@yahoo.com.cn
希望广交 老师和朋友
- SSH 框架实例 操作
- ssh框架整合实例
- SSH框架整合实例
- ssh框架获取ServletContext实例
- SSH框架注册小实例
- SSH框架整合的实例
- Myeclipse配置SSH框架实例
- SSH框架搭建登录实例
- SSH 集合框架应用实例
- SSH框架的登录实例
- ssh框架整合完整实例
- SSH框架实例学习1
- 有关SSH框架的一个实例
- ssh框架整合实例子1-配置文件
- ssh框架整合实例子-web层
- ssh框架整合实例子-业务层
- ssh框架整合实例子-持久层
- SSH框架开发实例:图书管理系统
- onkeypress,onkeydown,onkeyup区别
- 宇宙中隐藏巨大的太空隧道 大小与银河相当(图)
- Netsh 命令概述
- Liferay 4.4尝鲜
- CSDN-实现图片轮换
- SSH 框架实例 操作
- Java如何操作Word, Excel, PDF文档
- 软件除虫记
- SecureCRT 连接断开问题
- 在WPF的用户线程中更新UI界面
- Websphere Everyplace Mobile Portal - 支持各种移动设备的门户平台
- String与StringBuffer
- ASCII码表
- 一个中国站长必须知道的50件事(转)