您的位置:首页 > 编程语言 > Java开发

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样例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MyEclipse ssh