所使用的工具和环境。
jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2
好了,开始我们的第一个ssh2之旅吧。
首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张表单,让你填写用户名和密码,提交后存入数据库。就这么简单,呵呵。
第一步:。 我们首先新建一张mysql数据表
sql如下
CREATE TABLE mytest.users (
id INT NOT NULL,
username VARCHAR(50),
password VARCHAR(50),
PRIMARY KEY (id)
数据表创建好后结构如下:
当然我已经有几天数据添加进去了
第二步
打开myeclipse,新建一个web项目,命名为ssh2-2, java ee规范我们选择5,如图
第三步 务必小心的一步
导入ssh2的各个jar,步骤如下:
选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图
务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next,去掉specify database……复选框,next,去掉create session……复选框,finish。
再次选中选中当前的项目后,点击菜单烂的myeclipse---project capablities----add spring项,跳出如图
依然务必按照如是选择,jar文件选择如下5个:
点击next,
之后按下选择,务必,
next后finsh即可。
然后导入struts2的jar
如下5个放到lib下
然后放入我们的数据库驱动jar mysql-connector-java-5.0.8-bin.jar 没得话附件中有
至此,包都导入完毕
第四步
配置web.xml 代码如下 注意注释:
第五步:
从视图层入手;在webroot目录下新建一个save.jsp文件
如下代码;
接下去顺水推舟,自然开发action,及控制层
新建包com.test.action.user
新建一个SaveUserAction.java 代码初步如下:
于是,自然我们要新建一个bean
新建包com.test.bean 新建User.java
好了,现在我们先把控制层的action放在这里,开发业务层和持久层(DAO)
新建包com.test.dao
建类UserDAO.java
代码如下:
这是一个接口
在开发dao的实现类
新建包com.test.dao.impl
建类UserDAOImpl.java
代码:
好了,数据持久层(dao)开发好了,按顺序,现在应该开发业务层了,
新建包com.test.service
建类UserService.java
代码:
这是一个接口类
然后写实现类
新建包
com.test.service.impl
建类
UserServiceImpl.java
业务和持久层都开发好了,现在我们回到控制层action
修改action的代码如下:
修改struts.xml
如下
至此,我们已经开发好了一个典型的mvc项目,现在的任务是将strust2和hibernate都放入spring容器管理,
现在我们的项目结构如下:
然后修改 applicationContext.xml
代码如下 注意注释
jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2
好了,开始我们的第一个ssh2之旅吧。
首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张表单,让你填写用户名和密码,提交后存入数据库。就这么简单,呵呵。
第一步:。 我们首先新建一张mysql数据表
sql如下
CREATE TABLE mytest.users (
id INT NOT NULL,
username VARCHAR(50),
password VARCHAR(50),
PRIMARY KEY (id)
数据表创建好后结构如下:

当然我已经有几天数据添加进去了

第二步
打开myeclipse,新建一个web项目,命名为ssh2-2, java ee规范我们选择5,如图

第三步 务必小心的一步
导入ssh2的各个jar,步骤如下:
选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图

务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next,去掉specify database……复选框,next,去掉create session……复选框,finish。
再次选中选中当前的项目后,点击菜单烂的myeclipse---project capablities----add spring项,跳出如图

依然务必按照如是选择,jar文件选择如下5个:

点击next,
之后按下选择,务必,

next后finsh即可。
然后导入struts2的jar
如下5个放到lib下

然后放入我们的数据库驱动jar mysql-connector-java-5.0.8-bin.jar 没得话附件中有
至此,包都导入完毕
第四步
配置web.xml 代码如下 注意注释:
- <?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">
- <!-- struts2的常规配置 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 在web应用启动是自动形成一个spring容器 -->
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
第五步:
从视图层入手;在webroot目录下新建一个save.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>My JSP 'save.jsp' starting page</title>
- </head>
- <body>
- <s:form action='saveUser'>
- <s:textfield name="user.username" label="用名"></s:textfield>
- <s:textfield name="user.password" label="密码"></s:textfield>
- <s:submit></s:submit>
- </s:form>
- </body>
- </html>
接下去顺水推舟,自然开发action,及控制层
新建包com.test.action.user
新建一个SaveUserAction.java 代码初步如下:
- package com.test.action.user;
- import com.opensymphony.xwork2.ActionSupport;
- import com.test.bean.User;
- public class SaveUserAction extends ActionSupport {
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Override
- public String execute() throws Exception
- {
- return SUCCESS;
- }
- }
于是,自然我们要新建一个bean
新建包com.test.bean 新建User.java
- package com.test.bean;
- public class User {
- private Integer id;
- private String username;
- private String password;
- 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 String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
好了,现在我们先把控制层的action放在这里,开发业务层和持久层(DAO)
新建包com.test.dao
建类UserDAO.java
代码如下:
- package com.test.dao;
- import java.util.List;
- import com.test.bean.User;
- public interface UserDAO
- {
- public void saveUser(User user);
- public void removeUser(User user);
- public User findUserById(Integer id);
- public List<User> findAllUsers();
- public void updateUser(User user);
- }
在开发dao的实现类
新建包com.test.dao.impl
建类UserDAOImpl.java
代码:
- package com.test.dao.impl;
- import java.util.List;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import com.test.bean.User;
- import com.test.dao.UserDAO;
- /**
- *
- * @author Administrator
- * 这个dao试用了hibernate的数据库操作语句
- */
- public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
- /*
- * 获取所有数据
- */
- public List<User> findAllUsers() {
- String hql = "from User user order by user.id desc";
- return (List<User>) this.getHibernateTemplate().find(hql);
- }
- /*
- * 获取指定的数据
- */
- public User findUserById(Integer id) {
- User user = (User) this.getHibernateTemplate().get(User.class, id);
- return user;
- }
- public void removeUser(User user) {
- this.getHibernateTemplate().delete(user);
- }
- public void saveUser(User user) {
- this.getHibernateTemplate().save(user);
- }
- public void updateUser(User user) {
- this.getHibernateTemplate().update(user);
- }
- }
好了,数据持久层(dao)开发好了,按顺序,现在应该开发业务层了,
新建包com.test.service
建类UserService.java
代码:
- package com.test.service;
- import java.util.List;
- import com.test.bean.User;
- public interface UserService
- {
- public List<User> findAll();
- public void save(User user);
- public void delete(User user);
- public User findById(Integer id);
- public void update(User user);
- }
然后写实现类
新建包
com.test.service.impl
建类
UserServiceImpl.java
- package com.test.service.impl;
- import java.util.List;
- import com.test.bean.User;
- import com.test.dao.UserDAO;
- 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;
- }
- //服务层的方法
- public void delete(User user)
- {
- this.userDao.removeUser(user);
- }
- public List<User> findAll() {
- return this.userDao.findAllUsers();
- }
- public User findById(Integer id) {
- return this.userDao.findUserById(id);
- }
- public void save(User user)
- {
- this.userDao.saveUser(user);
- }
- public void update(User user)
- {
- this.userDao.updateUser(user);
- }
- }
业务和持久层都开发好了,现在我们回到控制层action
修改action的代码如下:
- package com.test.action.user;
- import com.opensymphony.xwork2.ActionSupport;
- import com.test.bean.User;
- import com.test.service.*;
- public class SaveUserAction extends ActionSupport {
- private User user;
- private UserService service;
- public UserService getService() {
- return service;
- }
- public void setService(UserService service) {
- this.service = service;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Override
- public String execute() throws Exception
- {
- this.service.save(this.user);
- return SUCCESS;
- }
- }
修改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="user" extends="struts-default">
- <action name="saveUser" class="saveUserAction">
- <result name="success" type="redirect">listUser.action</result>
- <result name="input">/saveUser.jsp</result>
- </action>
- </package>
- </struts>
至此,我们已经开发好了一个典型的mvc项目,现在的任务是将strust2和hibernate都放入spring容器管理,
现在我们的项目结构如下:

然后修改 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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <!-- 配置数据源 -->
- <!-- 一下分别配置了 数据库驱动 数据库路径 用户名 密码等 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
- <property name="url" value="jdbc:mysql://localhost:3306/mytest"></property>
- <property name="username" value="root"></property>
- <property name="password" value="123456"></property>
- <property name="maxActive" value="100"></property>
- <property name="maxIdle" value="30"></property>
- <property name="maxWait" value="500"></property>
- <property name="defaultAutoCommit" value="true"></property>
- </bean>
- <!-- 一下配置sessionFactory 这个东西曾经是在hibernate中定义的 如今交给了spring管理 -->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource"></property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.show_sql">true</prop>
- </props>
- </property>
- <property name="mappingResources">
- <list>
- <value>com/test/bean/User.hbm.xml</value>
- </list>
- </property>
- </bean>
- <!-- 以下使一些用到的类 在使用类中均没有实例化这个类,都交给了spring管理 -->
- <!-- DAObean -->
- <bean id="userDao" class="com.test.dao.impl.UserDAOImpl" scope="singleton">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <!-- DAObean -->
- <bean id="userService" class="com.test.service.impl.UserServiceImpl">
- <property name="userDao" ref="userDao"></property>
- </bean>
- <bean id="saveUserAction" class="com.test.action.user.SaveUserAction">
- <property name="service" ref="userService"></property>
- </bean>
- </beans>
好了 到此为止,ssh2的整合已经完成了,发布后开启服务器吧,
不对,服务器开启后有异常
这里是包冲突问题
到项目的lib目录下,
删除选中的jar即可
ok了 可以测试了
http://localhost:8080/ssh2-2/save.jsp