MyEclipse 配置SSH框架
2015-06-06 00:25
507 查看
环境说明
本文章是根据个人的搭建经验完成的轻量级SSH框架,也是实际应用中比较全面的基础框架。其中SSH指:Struts,Spring, Hibernate,是一个将MVC思想发挥的很好的web框架。开发平台: Windows 7 + MyEclipse 2014 + Tomcat 8.0.3+ JDK 1.7 + Mysql
不同的版本大同小异。
其中SSH所需的包均直接使用MyEclipse2014内集成的jar包,这样无需手动添加,比较方便。
建立工程目录
新建工程
打开MyEclipse, 新建一个web project:file -> new -> Web Project如下图所示:
然后next两步,到下面时,修改一点:
之后直接next到finish即可, 建立后目录如下:
建立src目录
为了使得目录结构清晰,将不同层次的源程序放到不同包内,分别建立如下4个目录:
- com.ssh.action :存放Action代码 - com.ssh.service :存放Service代码 - com.ssh.dao :存放Dao代码 - com.ssh.entity :存放数据库实体类
直接右击
src, 然后
new -> package如下图:
然后直接finishi即可。同样的步骤建立剩下三个目录。
这一步完成后的目录如下:
导入Struts,Spring,Hibernate环境
就是导入SSH环境了,这里使用的是MyEclipse集成的jar包导入Struts
过程:右击项目名SSH然后
MyEclipse ->Project Facets[capabilities]->Install Apache Struts 2.x Facet
初始图如下:
next到这步修改为第三项:
之后一直到finish即可。
安装完了之后,会发现在目录下多了关于struts的jar包目录。
导入Spring
导入Spring与Struts 过程几乎相同右击项目名称:
MyEclipse ->Project Facets[capabilities]->Install Apache Spring Facet之后一路next到finish即可。
导入hibernate
这个比较复杂一些,需要先配置数据库连接。建立数据库
这里建立一个数据库表来测试搭建是否成功。create database sshtest; use sshtest; create table t_user ( id int not null auto_increment, name varchar(20) not null, password varchar(10) not null, primary key (id) ); insert into t_user values(1,'shomy','123')
建立连接
建立数据库之后,在MyEclipse里面通过中间键来连接。过程如下:首先切换到数据库视图:
菜单栏 Window -> open perspective -> show MyEclipse database explorer
如下图:
开始只有一个MyEclipse Derby, 我们新建一个, 右击它, 然后new ,如下图:修改如下,这里需要一个连接数据库的jar
完成之后,点击
Test Driver如果出现建立成功即可。
然后在程序的右上角,切换到MyEclipse视图。
导入Hibernate
建立了数据库连接之后, 就可按照导入struts,与spring 的样子,导入Hibernate。
右击工程
MyEclipse ->Project Facets[capabilities]->Install Apache Spring Facet如下图:
然后next到此处: 修改目录:
在next 到此处加入 上一步新建的数据库连接。
建立完成之后,直接yes即可。
映射数据库表
然后在切换到Database视图。如图:选择:
Hibernate Reverse Engneering.
next 到此处时: 注意修改
然后finish即可。之后切换到MyEclipse视图,此时目录结果如下:
此时SSH的jar包以及数据库的映射完成。
建立Java与Jsp文件
上一步结束之后,开始在四个目录里面写东西了。其中
dao与service都是建立一个接口,一个实现。
首先是
com.ssh.dao,:
在dao目录右击,
new ->interface: 名字处填写:
UserDAO,代码如下
package com.ssh.dao; import com.ssh.entity.TUser; public interface UserDAO { public TUser queryUserByName(String name);//查询函数 }
然后创建dao的实现:
new -> class名字为 :
UserDAOImpl
代码如下:
package com.ssh.dao; import org.hibernate.Query; import org.hibernate.SessionFactory; import com.ssh.entity.TUser; public class UserDAOImpl implements UserDAO { private SessionFactory sessionFactory; public TUser queryUserByName(String name) { Query query = sessionFactory.getCurrentSession().createQuery( "from TUser as u where u.name = ?"); query.setString(0, name); TUser u = (TUser) query.uniqueResult(); return u; } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }
然后创建service代码:
先建立一个interface:在
com.ssh.service目录里面,
new -> interface名字:
UserService代码如下:
package com.ssh.service; public interface UserService { public boolean login(String name,String password); }
在
new -> class: UserServiceImpl` 代码如下:
package com.ssh.service; import com.ssh.dao.UserDAO; import com.ssh.entity.TUser; public class UserServiceImpl implements UserService { private UserDAO userDAO; public boolean login(String name, String password) { TUser u = userDAO.queryUserByName(name); if (u == null) { return false; } else { if (u.getPassword().equals(password)) { return true; } else { return false; } } } public UserDAO getUserDAO() { return userDAO; } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
最后建立
action文件 ,在
com.ssh.action目录下:
new -> class名字为:
LoginAction
代码为:
package com.ssh.action; import com.ssh.service.UserService; public class LoginAction { private String name; private String password; private UserService userService; public String login() { /* NAME和PASSWORD为空则返回登录页面,否则验证登录 */ if (null == name && null == password) { return "login"; } else { Boolean u = userService.login(name, password); if (u) { return "ok"; } else { return "error"; } } } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } }
到此java 文件建立完成。
下面建立三个测试的jsp文件:
在
WebRoot下建立三个jsp 步骤: 右击webroot,
new -> jSP(..), 分别命名为:
login.jsp,
loginOk.jsp,
loginError.jsp; 代码分别如下:
login.jsp:
<html><body> <center><form method="post" action="login" > UserName<input type="text" name="name" id="name"/><br/> Password<input type="password" name="password" id="password"/><br/> <input type="submit" value="login" /></form></center> </body></html>
loginOk.jsp:代码
<html> <body> <center><h1>Login Is Ok</h1></center> </body> </html>
loginError.jsp:代码
<html> <body> <center><h1>Login Is Error</h1></center> </body> </html>
至此,jsp,java文件均已完成,下面也是最关键的,修改配置文件。
修改配置文件
首先修改struts.xml在src 下, 将
struts.xml修改为:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" extends="struts-default"> <action name="login" class="com.ssh.web.LoginAction" method="login"> <result name="login">login.jsp</result> <result name="ok">loginOk.jsp</result> <result name="error">loginError.jsp</result> </action> </package> </struts>
然后修改同一个目录下的:
ApplicationContent.xml可以看出,原来的文件里面已经有了不少内容,且都是由bean块组成。我们需要修改并添加一些内容,完整的代码如下:数据库名字,数据库密码等因人而异。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd" xmlns:tx="http://www.springframework.org/schema/tx"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/shopping"></property> <property name="username" value="root"></property> <property name="password" value="123"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> </props> </property> <property name="mappingResources"> <list> <value>com/ssh/entity/TUser.hbm.xml</value></list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <!-- 指明进行事务管理业务方法名[*是通配符] --> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="edit*">PROPAGATION_REQUIRED</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 登录Action --> <bean id="loginAction" class="com.ssh.action.LoginAction" scope="singleton"> <property name="userService" ref="userService" /> </bean> <!-- userDAO --> <bean id="userDAO" class="com.ssh.dao.UserDAOImpl" parent="daoTemplate" /> <bean id="userService" parent="baseTransactionProxy"> <property name="target"> <bean class="com.ssh.service.UserServiceImpl"> <property name="userDAO" ref="userDAO"/> </bean> </property> </bean> <bean id="daoTemplate" abstract="true"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /></beans>
其中新加的关键部分就是 ,每次添加新的功能时,都需要照猫画虎的,加上两个相应的bean。
<!-- 登录Action --> <bean id="loginAction" class="com.ssh.action.LoginAction" scope="singleton"> <property name="userService" ref="userService" /> </bean> <!-- userDAO --> <bean id="userDAO" class="com.ssh.dao.UserDAOImpl" parent="daoTemplate" /> <bean id="userService" parent="baseTransactionProxy"> <property name="target"> <bean class="com.ssh.service.UserServiceImpl"> <property name="userDAO" ref="userDAO"/> </bean> </property> </bean>
最后添加
jdbc.properties在src目录下,
new ->file名字直接填:
jdbc.properties
修改内容如下: 数据库名字,数据库密码等因人而异。
proxool.maxConnCount=5 proxool.minConnCount=2 proxool.statistics=1m,15m,1h,1d proxool.simultaneousBuildThrottle=5 proxool.trace=false proxool.verbose=false jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/sshtest?useUnicode=true&characterEncoding=gbk jdbc.username=root jdbc.password=123
具体的原理,看代码也大概看的差不多。多加几个慢慢就熟悉了。我这就不细讲每一行的作用了。
测试
至此,环境搭好了,不过还有一点点瑕疵,就是struts包与Hibernate包里面有重复的antlr.jar 不过版本不同,可能会引起错误。因此我们移除掉struts的antlt2.7.2.jar:
右击项目 -> build path ->configure build path如下:
点击Edit 弹出:
之后点击ok即可。
最后可以修改一下
web.xml文件
在
WebRoot/WEB-INFO下, 修改一下默认页面如下:
最后开始运行:
右击项目->run as -> MyEclipse Server Application在弹出的的窗口中,选择自己相应的服务器,我这里是tomcat 8.0.3. 然后点击OK, 服务器开始启动,
可以通过console 查看进度,等完全启动,会显示:
然后在浏览器地址栏里输入:
localhost:8080/SSH
弹出输入框,输入正确的用户名 密码, 显示
Login is Ok,并且,输入错误的用户名密码,显示
login is Error表示搭建成功。
至此,整个SSH 框架借助MyEclipse 搭建成功,一开始也各种问题,各种404,500. 但是搭建成功之后,不得不说,SSH很完善,封装扩展性很好,层次分明。多写几个ACTION, 就会熟悉框架的用法了。
附代码
附件是 搭建成功的SSH 框架,可以,修改一点数据库的东西,就可以使用,可以作参考。其中muysql-java.jar在工程里面。
SSH样例
相关文章推荐
- Linux Generating SSH Keys
- MyEclipse Web Project转Eclipse Dynamic Web Project
- MyEclipse常用配置图文教程
- perl脚本实现限制ssh最大登录次数(支持白名单)
- MyEclipse连接MySQL数据库报错解决办法
- rsync ssh 数据同步分析
- 在myeclipse中如何加入jquery代码提示功能
- 搭建SSH时的思考和遇到的几个问题的解决方法
- MyEclipse 6.0.1 6.0GA 6.0M1 5.5GA 5.1.1GA 注册码及高速下载地址
- SSH 使用原理 与解释
- SSH整合中 hibernate托管给Spring得到SessionFactory
- javascript在myeclipse中报错的解决方法
- eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
- eclipse+myeclipse 环境配置方法
- Linux VPS利用SSH重置ROOT密码的方法
- 设置Myeclipse中的代码格式化、注释模板及保存时自动格式化
- ssh,scp自动登陆的实现方法
- linux下使用ssh远程执行命令批量导出数据库到本地
- shell脚本实现ssh自动登录功能分享
- ssh项目环境搭建步骤(web项目)