这篇博文主要目的: 搭建一个能运行的,最基本的ssh框架。
我会在最后提供一个项目的完整 war 包,这个才是干货!
首先,需要准备的说明一下:
jdk 我用的是1.7版本, 工具用的是eclipse的EE版本(eclipse-jee-luna-SR1-win32-x86_64),服务器tomcat7 去官网下吧。
数据库:mysql,下载地址:http://download.csdn.net/detail/iyinyue1/8069009,安装教程自己搜哦。
以下三点是关于搭建ssh的核心内容。
1.创建工程,应用中添加struts2框架,主要是在web.xml文件中加入如下配置:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
之后,在src目录中加入struts.xml文件。
2.添加spring框架,我用的方式是同样在web.xml中添加如下配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
监听器添加完毕,注意application的位置,我是放在了wen-inf文件下。
3.用spring管理hibernate,在application.xml配置中添加:
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/mh</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
以上是配置数据库连接需要的信息。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource">
</property>
<property name="mappingResources">
<list>
<value>com/mh/ssh/model/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
用spring来管理hibernate的sessionFactory。
<bean id="userDao" class="com.mh.ssh.dao.impl.UserDaoHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
这个类主要用来和数据层打交道,添加,修改,删除,查询数据库都是在这里完成。
接下来,是以一个登录页面和注册页面作为演示的例子,来说明从前台一直到后台数据库的过程,整个过程很简单,就是
用户输入用户名密码,到数据库中查找,找到则成功,否则重新输入。
1.login.jsp页面代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="login.action" method="post">
<table cellpadding="0" cellspacing="0" norder="0" align="center">
<caption>用户登录</caption>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登录"></td>
</tr>
</table>
<input type="button" value="注册" οnclick="window.location.href='reg.jsp';"/>
</form>
</body>
</html>
用户可以登录,也可以点击注册按钮跳转到注册页面,注册页面收集用户名和密码,传给struts来处理。
2.struts.xml文件中需要配置哪个action处理这个请求(<form action="login.action" method="post">):
<action name="login" class="loginAction">
<result name="input" type="redirect">/login.jsp</result>
<result name="success" type="redirect">/success.jsp</result>
</action>
如果成功则跳转到成功页面,如果失败则还回到登陆页面。
LoginAction代码:
public class LoginAction extends ActionSupport {
private String username;
private String password;
private LoginService loginService;
public LoginAction() {
// loginService = new LoginServiceImpl();
}
public String execute() throws Exception {
System.out.println("进入execute方法");
System.out.println((loginService==null)+"");
if (loginService != null && loginService.validate(username, password)) {
ActionContext.getContext().getSession().put("uname", this.getUsername());
return SUCCESS;
}
return INPUT;
}
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;
}
public LoginService getLoginService() {
return loginService;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
}
这里调用的服务类的验证方法,而服务类用会调用dao层的代码,返回结果。
UserDaoHibernateImpl 继承HibernateDaoSupport支持类,实现DAO接口,完成对数据库的访问。
public class UserDaoHibernateImpl extends HibernateDaoSupport implements
UserDao {
@Override
public boolean validate(String username, String password) {
List<User> users = getHibernateTemplate()
.find("from User where username=? and password=?", username,
password);
return users != null && !users.isEmpty();
}
@Override
public void saveUser(User user) {
getHibernateTemplate().save(user);
}
}
基本的东西就是这些了,如果需要更加详细了解的可以查看项目源代码:
完整的项目war包下载地址:http://www.400gb.com/file/76656052