很久没做后台开发了,最近在总结工作的时候又想起了久违的SSH框架,没事闲的就搭了一个,用的是当前(2016-07-20)最新的版本,与大家分享。
开发工具:
eclipse-jee-neon-R-win32-x86_64
apache-tomcat-8.0.36
struts-2.3.29-all
hibernate-release-5.2.1.Final
spring-framework-4.3.1.RELEASE-dist
本节实现功能:struts框架搭建实现
以一个简单的登录功能为例,为了全面展示,我会建两个项目,shDemo和sshTest,shDemo用于整合struts+hibernate框架,sshTest用于实现struts+hibernate+spring框架,因为shDemo先整合好之后再引入spring要删改一些文件,变化较大,这样展示起来条理会比较清晰。
正文开始:
0.搭建环境
JDK什么的就没什么说的必要了,自己解决;用mysql建一个数据库,在里面建一张表,命名user,只有id、username、password三个字段就行,再造几条数据。
建表脚本:
create table user(
id int auto_increment,
username varchar(20) not null,
password varchar(20) not null,
primary key(id)
);
1.创建工程
用eclipse创建一个动态网络工程,命名为shDemo。
2.导入jar包
最简单的方法是找到struts-2.3.29-all下面app文件夹里面的struts2-blank.war包,将其解压,这是struts的一个demo,直接把里面lib文件夹中的包全考到项目中就可以。
注:
1.这里还缺少commons-logging-1.1.3.jar包,在struts-2.3.29-all\struts-2.3.29\lib文件夹下有,把它加上(没有它在这里也没影响,只是在后面spring里面要用到它)。
2.导入工程后别忘了build path。
3.写几个jsp文件
为了代码安全,我在WEB-INF文件夹下建立一个jsp文件夹用于放置jsp文件,创建login.jsp、home.jsp、register.jsp和error.jsp四个文件,login.jsp里面有一个登录表单,其他的都是空的,只把title写成相应的中文,以便区分。
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录页面</title>
</head>
<body>
<div align="center" style="color:#6DA500">
<form action="login" method="post">
账号:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="登录"><br>
</form>
</div>
</body>
</html>
4.写web.xml文件
在WEB-INF目录下的web.xml中写以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>shDemo</display-name>
<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>
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.写struts.xml文件
在src目录下创建struts.xml文件,写出jsp的具体映射。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="struts-default.xml" />
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.tzy.action.LoginAction">
<result name="success">/WEB-INF/jsp/home.jsp</result>
<result name="register">/WEB-INF/jsp/register.jsp</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</action>
</package>
</struts>
6.创建接口文件
创建以下文件目录
再创建以下几个接口文件:
com.tzy.dao.LoginDao.java
package com.tzy.dao;
import com.tzy.bean.User;
public interface LoginDao {
public User getUser(String username);
}
com.tzy.service.LoginService.java
package com.tzy.service;
public interface LoginService {
public String checkUser(String username,String password);
}
7.实现接口
由于本次只实现struts,所以只实现个假的LoginServiceImpl作为展示用,LoginDaoImpl在hibernate篇实现。
com.tzy.serviceImpl.LoginServiceImpl.java
package com.tzy.serviceImpl;
import com.tzy.service.LoginService;
public class LoginServiceImpl implements LoginService {
@Override
public String checkUser(String username, String password) {
//测试方法
if("zhangsan".equals(username)){
if("123".equals(password)){
return "success";
}else{
return "error";
}
}else{
return "register";
}
}
}
8.实现LoginAction
com.tzy.action.LoginAction.java
package com.tzy.action;
import com.opensymphony.xwork2.ActionSupport;
import com.tzy.serviceImpl.LoginServiceImpl;
public class LoginAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String password;
LoginServiceImpl loginService;
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;
}
@Override
public String execute() throws Exception {
loginService = new LoginServiceImpl();
return loginService.checkUser(username, password);
}
}
这样一个简单的Struts框架就搭建完成了,运行项目,输入账号zhangsan,密码123,可以得到home.jsp,故意输错账号或密码也会跳转到相应的register.jsp、error.jsp页面。