SSH框架的第一个整合例子

SSH框架的第一个整合例子SSH框架整合 2009-07-25 11:28:35 阅读332 评论2 字号:大中小 订阅 . ,我们先实现一个最基本的需求..添加,然后保存以后返回列表页面.这里先不包括验证什么的..都假设输入是正确的.验证到下一节说明.. 我们从需求出发...一步步实现.我这里用的是myeclipse6.0 .struts2.0.16.spring2.0 hibernate3 mysql5.1 1.准备工作...当然是数据库了..在mysql数据库里,创建一个名为"user"的数据库.创建一个表也叫"user". 表里面就三个字段,id ,username ,age这里我的数据库名为 root 密码为11. 2.创建一个web project .工程名是myTest1.选择JAVA EE 5.0..点finish. 3导入hibernate.点工程右键,MyEclipse 选择Add hibernate capabilities.上面的不变.下面下面的JAR Library Installation .选择Copy cheched Library..点next .这里不需要修改,点Next.将最上面的勾去掉.我们等下自己写这个factory.点next.再将上面的勾去掉.点finish.. 4.导入spring..点工程右键,MyEclipse 选择Add spring capabilities..其中Libraries选择前四个.还有一个Spring 2.0 Web libraries ..一共是五个..下面的JAR Library Installation .选择Copy cheched Library...这个.也就是将加入的jar包复制到lib目录下..点next .在产生applicationContext.xml的目录里选择WebRoot/WEB-INF 点next.把上面的√去掉.等下我们自己写...最后点FINISH.spring就导入成功了 5 导入struts2..现在myeclipse还不支持导入struts2.所以这里我们需要手动导入.方法也很简单..将struts2.0.16客户端的jar包里.选择freemarker.jar,ognl.jar.struts2-spring-plugin.jar.xwork.jar.struts-core.jar.这里不需要导入common-logging.jar.因为spring里面已经有这个jar包了.所以不需要再次导入..然后在src目录下创建一个struts.xml..这样就差不多了. 这里特别注意一下.需要将common-pool.jar包放到Lib目录下..貌似myeclipse6.5就会自动导入.6.0不会的说 6 准备工作差不多了.终于开始写页面了...首先,我们先做一个save.jsp..里面有一个表单,输入名字和年龄..

//注意,我们这里选择模型驱动.而不是字段驱动. 还有,这个action name 设置为 userAction .. 7创建bean..这个很简单.就是在com.test.model下面创建一个User.java.标准的bean.没啥可说的 package com.test.model; public class User { private Integer id; private String username; private int age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 7 开始写action .首先在src下面创建一个com.test.action包.在这个包下面创建UserAction.java package com.test.action; import com.opensymphony.xwork2.ActionSupport; import com.test.model.User; import com.test.service.UserService; public class UserAction extends ActionSupport { private UserService userservice; private User user; public UserService getUserservice() { return userservice; } public void setUserservice(UserService userservice) { this.userservice = userservice; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute(){ userservice.saveUser(user); return SUCCESS; } } 这里在流程上已经有点偏了.因为这里我直接写出了userserive.这个类我们还没实现..而在实现这个service以前我们又必须实现userDAO.下一步,我们实现userDAO 8 新建一个包.com.test.DAO 这个是存放DAO接口的..spring要求我们必须面向接口编程 创建一个UserDAO.java package com.test.DAO; //这里定义了五个方法.分别是增删改查..查里面有两个,一个是根据ID查,一个是查所有. import java.util.List; import com.test.model.User; public interface UserDAO { public void addUser(User user); public void delUser(User user); public void updateUser(User user); public User selectById(Integer id); public List selectAll(); } 9 创建一个com.test.DAO.impl包.实现上面定义的UserDAO ...类名是UserDAOimpl package com.test.DAO.impl;//这里结合了hibernate.所以我们继承 HibernateDaoSupport来实现相应的操作.都很简单的..就要注意下selectALL方法.里面用到了hql语句 import java.util.List; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.test.DAO.UserDAO; import com.test.model.User; public class UserDAOimpl extends HibernateDaoSupport implements UserDAO { @Override public void addUser(User user) { this.getHibernateTemplate().save(user); } @Override public void delUser(User user) { this.getHibernateTemplate().delete(user); } @Override @SuppressWarnings("unchecked") public List selectAll() { String hql= "from User"; return (List)this.getHibernateTemplate().find(hql); } @Override public User selectById(Integer id) { return (User)this.getHibernateTemplate().get(User.class, id); } @Override public void updateUser(User user) { this.getHibernateTemplate().update(user); } } 10创建好了DAO实现数据库的操作..现在开始写Service业务层...由于我们没有任何事务,所以Service就是调用一次DAO层...首先还是创建一个包来放接口.com.test.service ..里面的类UserService.java package com.test.service; import java.util.List; import com.test.model.User; public interface UserService {//这里也对应DAO.写了五个方法.. public void saveUser(User user); public void delUser(User user); public void updateUser(User user); public User findById(int id); public List findAll(); } 11同理,当然是写这个service的实现类..com.test.service.impl包..UserServiceImpl.java package com.test.service.impl;//这里没写什么业务,只是调用了一次dao. import java.util.List; import com.test.DAO.UserDAO; import com.test.model.User; import com.test.service.UserService; public class UserServiceImpl implements UserService { private UserDAO userdao; public UserDAO getUserdao() { return userdao; } public void setUserdao(UserDAO userdao) { this.userdao = userdao; } @Override public void delUser(User user) { userdao.delUser(user); } @Override public List findAll() { return userdao.selectAll(); } @Override public User findById(int id) { return userdao.selectById(id); } @Override public void saveUser(User user) { userdao.addUser(user); } @Override public void updateUser(User user) { userdao.updateUser(user); } } 12 最重要的地方开始了.就是配置applicationContext.xml.直接放上来代码,一点点解释吧.

//配置dataSource.这个部分在hibernate里面说的比较多了.不多说了 com.mysql.jdbc.Driver jdbc:mysql://localhost/user root 11 com/test/model/User.hbm.xml org.hibernate.dialect.MySQLDialect true //这个部分也说明了.其实就是在DAO里面注入一个factory.我们在调用this.getHibernateTemplate() 的时候必须有这个factory. //在类UserServiceImpl里面定义了一个userdao.这里的这个name属性必须和那里的名字相同.因为要调用那里的set方法. //依赖注入.spring里面说了很多了... //这个是配置下面list页面的时候用的...先放上来了...免得重复黏贴 13 save页面的最后一步当然是配置struts.xml.结果页面下面再说

ListAction.action//这里重定向到ListAction.显示list页面 /save.jsp /list.jsp//list页面的action配置 /index.jsp 14 至此,save页面已经全部完成.但是提交以后总要显示列表信息吧..也就是将数据库里的数据全部取出来显示.所以,我们在com.test.action下面再写一个action.叫ListAction.java package com.test.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.test.service.UserService; public class ListAction extends ActionSupport { private UserService service; public UserService getService() { return service; } public void setService(UserService service) { this.service = service; } @SuppressWarnings("unchecked") @Override public String execute() throws Exception { Map request = (Map)ActionContext.getContext().get("request");获取一个request的MAP对象 request.put("list", service.findAll());//放入MAP return SUCCESS; } } 15 这里,还忘记一个重要的东西..就是bean对应的hbm.xml 因为我使用Middlegen自动生成的,所以代码多一些..ID的生产策略是加一..

@hibernate.class table="user" @hibernate.id generator-class="assigned" type="java.lang.Integer" column="id" @hibernate.property column="username" length="50" not-null="true" @hibernate.property column="age" length="10" not-null="true" 16 我忘记了一个非常重要的配置..web.xml.这么重要的东西.不多说了.

struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* org.springframework.web.context.ContextLoaderListener 17又忘记一个jar包.就是jdbc连mysql的驱动包..我用的是mysql-connector-java-5.1.7-bin.jar 18 最后是我们的列表页面.list.jsp .里面用到ognl表达式.有空得去学习下

User List

序号 名字 年龄 删除 修改
删除 修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值