所使用的工具和环境。
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)
数据表创建好后结构如下:
![](https://img-my.csdn.net/uploads/201304/16/1366077538_2119.png)
当然我已经有几天数据添加进去了
![](https://img-my.csdn.net/uploads/201304/16/1366077557_2767.png)
第二步
打开myeclipse,新建一个web项目,命名为ssh2-2, java ee规范我们选择5,如图
![](https://img-my.csdn.net/uploads/201304/16/1366077569_3375.png)
第三步 务必小心的一步
导入ssh2的各个jar,步骤如下:
选中当前的项目后,点击菜单烂的myeclipse---project capablities----add hibernate项,跳出如图
![](https://img-my.csdn.net/uploads/201304/16/1366077572_3032.png)
务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next,去掉specify database……复选框,next,去掉create session……复选框,finish。
再次选中选中当前的项目后,点击菜单烂的myeclipse---project capablities----add spring项,跳出如图
![](https://img-my.csdn.net/uploads/201304/16/1366077575_5972.png)
依然务必按照如是选择,jar文件选择如下5个:
![](https://img-my.csdn.net/uploads/201304/16/1366077579_4000.png)
点击next,
之后按下选择,务必,
![](https://img-my.csdn.net/uploads/201304/16/1366077581_4389.png)
next后finsh即可。
然后导入struts2的jar
如下5个放到lib下
![](https://img-my.csdn.net/uploads/201304/16/1366077584_2302.png)
然后放入我们的数据库驱动jar mysql-connector-java-5.0.8-bin.jar 没得话附件中有
至此,包都导入完毕
第四步
配置web.xml 代码如下 注意注释:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appversion="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文件
如下代码;
- <%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
- <%@taglibprefix="s"uri="/struts-tags"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <title>MyJSP'save.jsp'startingpage</title>
- </head>
- <body>
- <s:formaction='saveUser'>
- <s:textfieldname="user.username"label="用名"></s:textfield>
- <s:textfieldname="user.password"label="密码"></s:textfield>
- <s:submit></s:submit>
- </s:form>
- </body>
- </html>
接下去顺水推舟,自然开发action,及控制层
新建包com.test.action.user
新建一个SaveUserAction.java 代码初步如下:
- packagecom.test.action.user;
- importcom.opensymphony.xwork2.ActionSupport;
- importcom.test.bean.User;
- publicclassSaveUserActionextendsActionSupport{
- privateUseruser;
- publicUsergetUser(){
- returnuser;
- }
- publicvoidsetUser(Useruser){
- this.user=user;
- }
- @Override
- publicStringexecute()throwsException
- {
- returnSUCCESS;
- }
- }
于是,自然我们要新建一个bean
新建包com.test.bean 新建User.java
- packagecom.test.bean;
- publicclassUser{
- privateIntegerid;
- privateStringusername;
- privateStringpassword;
- publicIntegergetId(){
- returnid;
- }
- publicvoidsetId(Integerid){
- this.id=id;
- }
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- publicStringgetPassword(){
- returnpassword;
- }
- publicvoidsetPassword(Stringpassword){
- this.password=password;
- }
- }
好了,现在我们先把控制层的action放在这里,开发业务层和持久层(DAO)
新建包com.test.dao
建类UserDAO.java
代码如下:
- packagecom.test.dao;
- importjava.util.List;
- importcom.test.bean.User;
- publicinterfaceUserDAO
- {
- publicvoidsaveUser(Useruser);
- publicvoidremoveUser(Useruser);
- publicUserfindUserById(Integerid);
- publicList<User>findAllUsers();
- publicvoidupdateUser(Useruser);
- }
在开发dao的实现类
新建包com.test.dao.impl
建类UserDAOImpl.java
代码:
- packagecom.test.dao.impl;
- importjava.util.List;
- importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
- importcom.test.bean.User;
- importcom.test.dao.UserDAO;
- /**
- *
- *@authorAdministrator
- *这个dao试用了hibernate的数据库操作语句
- */
- publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{
- /*
- *获取所有数据
- */
- publicList<User>findAllUsers(){
- Stringhql="fromUseruserorderbyuser.iddesc";
- return(List<User>)this.getHibernateTemplate().find(hql);
- }
- /*
- *获取指定的数据
- */
- publicUserfindUserById(Integerid){
- Useruser=(User)this.getHibernateTemplate().get(User.class,id);
- returnuser;
- }
- publicvoidremoveUser(Useruser){
- this.getHibernateTemplate().delete(user);
- }
- publicvoidsaveUser(Useruser){
- this.getHibernateTemplate().save(user);
- }
- publicvoidupdateUser(Useruser){
- this.getHibernateTemplate().update(user);
- }
- }
好了,数据持久层(dao)开发好了,按顺序,现在应该开发业务层了,
新建包com.test.service
建类UserService.java
代码:
- packagecom.test.service;
- importjava.util.List;
- importcom.test.bean.User;
- publicinterfaceUserService
- {
- publicList<User>findAll();
- publicvoidsave(Useruser);
- publicvoiddelete(Useruser);
- publicUserfindById(Integerid);
- publicvoidupdate(Useruser);
- }
然后写实现类
新建包
com.test.service.impl
建类
UserServiceImpl.java
- packagecom.test.service.impl;
- importjava.util.List;
- importcom.test.bean.User;
- importcom.test.dao.UserDAO;
- importcom.test.service.UserService;
- publicclassUserServiceImplimplementsUserService{
- privateUserDAOuserDao;
- publicUserDAOgetUserDao(){
- returnuserDao;
- }
- publicvoidsetUserDao(UserDAOuserDao){
- this.userDao=userDao;
- }
- //服务层的方法
- publicvoiddelete(Useruser)
- {
- this.userDao.removeUser(user);
- }
- publicList<User>findAll(){
- returnthis.userDao.findAllUsers();
- }
- publicUserfindById(Integerid){
- returnthis.userDao.findUserById(id);
- }
- publicvoidsave(Useruser)
- {
- this.userDao.saveUser(user);
- }
- publicvoidupdate(Useruser)
- {
- this.userDao.updateUser(user);
- }
- }
业务和持久层都开发好了,现在我们回到控制层action
修改action的代码如下:
- packagecom.test.action.user;
- importcom.opensymphony.xwork2.ActionSupport;
- importcom.test.bean.User;
- importcom.test.service.*;
- publicclassSaveUserActionextendsActionSupport{
- privateUseruser;
- privateUserServiceservice;
- publicUserServicegetService(){
- returnservice;
- }
- publicvoidsetService(UserServiceservice){
- this.service=service;
- }
- publicUsergetUser(){
- returnuser;
- }
- publicvoidsetUser(Useruser){
- this.user=user;
- }
- @Override
- publicStringexecute()throwsException
- {
- this.service.save(this.user);
- returnSUCCESS;
- }
- }
修改struts.xml
如下
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEstrutsPUBLIC
- "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <packagename="user"extends="struts-default">
- <actionname="saveUser"class="saveUserAction">
- <resultname="success"type="redirect">listUser.action</result>
- <resultname="input">/saveUser.jsp</result>
- </action>
- </package>
- </struts>
至此,我们已经开发好了一个典型的mvc项目,现在的任务是将strust2和hibernate都放入spring容器管理,
现在我们的项目结构如下:
![](https://img-my.csdn.net/uploads/201304/16/1366077588_5097.png)
然后修改 applicationContext.xml
代码如下 注意注释
- <?xmlversion="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/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <!--配置数据源-->
- <!--一下分别配置了数据库驱动数据库路径用户名密码等-->
- <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
- <propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property>
- <propertyname="url"value="jdbc:mysql://localhost:3306/mytest"></property>
- <propertyname="username"value="root"></property>
- <propertyname="password"value="123456"></property>
- <propertyname="maxActive"value="100"></property>
- <propertyname="maxIdle"value="30"></property>
- <propertyname="maxWait"value="500"></property>
- <propertyname="defaultAutoCommit"value="true"></property>
- </bean>
- <!--一下配置sessionFactory这个东西曾经是在hibernate中定义的如今交给了spring管理-->
- <beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <propertyname="dataSource"ref="dataSource"></property>
- <propertyname="hibernateProperties">
- <props>
- <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <propkey="hibernate.show_sql">true</prop>
- </props>
- </property>
- <propertyname="mappingResources">
- <list>
- <value>com/test/bean/User.hbm.xml</value>
- </list>
- </property>
- </bean>
- <!--以下使一些用到的类在使用类中均没有实例化这个类,都交给了spring管理-->
- <!--DAObean-->
- <beanid="userDao"class="com.test.dao.impl.UserDAOImpl"scope="singleton">
- <propertyname="sessionFactory"ref="sessionFactory"></property>
- </bean>
- <!--DAObean-->
- <beanid="userService"class="com.test.service.impl.UserServiceImpl">
- <propertyname="userDao"ref="userDao"></property>
- </bean>
- <beanid="saveUserAction"class="com.test.action.user.SaveUserAction">
- <propertyname="service"ref="userService"></property>
- </bean>
- </beans>
好了 到此为止,ssh2的整合已经完成了,发布后开启服务器吧,
不对,服务器开启后有异常
这里是包冲突问题
到项目的lib目录下,
删除选中的jar即可
ok了 可以测试了
http://localhost:8080/ssh2-2/save.jsp
来自http://www.360doc.com/content/09/0817/15/219800_4990487.shtml