SSH框架搭建详细图文教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

框架的搭
点击完成。

更改Folder路径,选择SSH项目WebRoot文件夹下的WEB-INF,完成。

SSH框架搭建详细图文教程
现在项目的目录结构如下,Spring框架添加完成。

SSH框架搭建详细图文教程
4.连接数据库。

点击右上角的图标"打开透视图",选择MyEclipse Database Explorer。

在窗口中右键->New 新建一个数据库连接。

SSH框架搭建详细图文教程
Driver template 选择 MySQL Connector/J
Driver name 起名叫test
Connection URL 更改为jdbc:mysql://自己的IP地址:端口号/数据库名称
User name 填写MySQL的用户名
Password 填写MySQL的密码
Driver JARs 点击Add JARs按钮,浏览到事先准备的mysql-connector-java-5.0.8-bin.jar Save password 选上
SSH框架搭建详细图文教程
点击Test Driver,测试结果:数据库配置正确,点击完成。

SSH框架搭建详细图文教程
双击添加的test连接,展开目录,可以发现我们事先创建的user表。

SSH框架搭建详细图文教程
5.添加Hibernate框架。

右键SSH项目,选择MyEclipse->Add Spring Capabilities。

点击下一步。

SSH框架搭建详细图文教程
配置中选择第二项"Spring configuration file"。

把Spring与Hibernate整合到一起,点击下一步。

SSH框架搭建详细图文教程
在菜单中选第二项"Existing Spring configuration file",点击下一步。

SSH框架搭建详细图文教程
DB Driver选择在添加Spring框架时配置的test,点击下一步。

SSH框架搭建详细图文教程
取消Create SessionFactory class?这个选项,点击完成。

现在的目录结构如下,SSH框架大体搭建完成。

SSH框架搭建详细图文教程
6.测试功能。

先部署一下项目,访问首页看看效果。

选择窗口上方图标"Deploy MyEclipse J2EE Project to Server"->点击add添加SSH项目->Server选择MyEclipse Tomcat。

SSH框架搭建详细图文教程
项目部署成功。

SSH框架搭建详细图文教程
点击窗口上方图标"Run MyEclipse Servers"启动Tomcat。

SSH框架搭建详细图文教程
在浏览器中访问SSH项目地址,别忘了加上Tomcat的默认端口,8080端口。

输入地址:http://localhost:8080/SSH,Tomcat会访问SSH项目WebRoot下的index.jsp。

SSH框架搭建详细图文教程
现在修改一下index.jsp中给的内容,在Body中添加"这是我的首页"。

Ctrl+S保存。

SSH框架搭建详细图文教程
这里出现了一个问题,页面默认的编码为ISO-8859-1,不支持中文字符,无法保存。

我们先把这个提示关掉。

选择窗口->首选项->MyEclipse->JSP->Files and Editors->JSP,把编码改为ISO 10646/Unicode(UTF-8)->应用->确定。

编码问题是一个很常见的问题,为避免出现这类我提我们尽量将工作空间的所有编码格式统一,无论前台后台还是数据库,否则会引发许多问题,例如中文乱码。

选择窗口->首选项->常规->工作空间->文本文件编码选择其他->其他选项里选择UTF-8->应用->确定。

SSH框架搭建详细图文教程

SSH框架搭建详细图文教程
Id Generator 选择 native,点击完成。

SSH框架搭建详细图文教程
此时的目录结构如下,我们可以看到系统生成了3个类,一个配置文件。

User 继承自AbstractUser,是User表的实体类。

UserDAO 封装了一些对数据库的常用操作。

User.hbm.xml 是hibernate-mapping映射配置文件,配置了哪个实体类映射哪个表,配置了实体类的哪个属性映射表里的哪列。

如果这些东西不用hibernate生成,那么我们就要自己写,要浪费很多时间,hibernate的作用就体现出来了。

SSH框架搭建详细图文教程
现在来写测试页。

打开WEB-INF文件夹下的struts-config.xml文件,切换到设计视图(design)。

右键->New->Form Action and JSP。

SSH框架搭建详细图文教程
填写Form表单属性:
Use case: login
Name:loginForm
在下方Form Properties中添加两个属性username: JSP input type text password: JSP input type password
SSH框架搭建详细图文教程
切换到JSP选项,填写JSP属性:
勾选Create JSP form
路径修改为/jsp/login.jsp
点击完成。


现在添加两个页面:登录成功页和登录失败页,实现登录后的跳转。

在WebRoot/jsp/下新建两个JSP页。

起名为loginSuccess.jsp和loginFail.jsp。

SSH框架搭建详细图文教程
向导信息如下:
SSH框架搭建详细图文教程
在loginSuccess.jsp页面body中添加"登录成功!<br>"。

在loginSuccess.jsp页面body中添加"登录成功!<br>"。

在loginFail.jsp页面body中添加"登录失败<br>"。

SSH框架搭建详细图文教程
把登录页、登录成功页、登录失败页3个页面相关联。

切换到struts-config.xml的设计视图。

右键login.jsp->New->Forward。

SSH框架搭建详细图文教程
loginSuccess:
选择Local Action Forward
浏览Action Path:/login
填写name:loginSuccess
浏览Path:/jsp/loginSuccess.jsp
完成
loginFail:
选择Local Action Forward
浏览Action Path:/login
填写name:loginFail
浏览Path:/jsp/loginFail.jsp
完成
SSH框架搭建详细图文教程
切换到Source视图,可以看到代码如下图:
Action里多了
<forward name="loginSuccess" path="/jsp/loginSuccess.jsp" />
<forward name="loginFail" path="/jsp/loginFail.jsp" />
两行代码,页面跳转添加完成。

现在来写具体的执行代码。

打开LoginAction.java。

可以看到自动生成的代码如下图:
SSH框架搭建详细图文教程
我们先不连数据库,先写一个测试的登录代码。

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//获取帐号密码
String username = loginForm.getUsername();
String password = loginForm.getPassword();
//帐号密码匹配,跳转到登录成功页
if("asd".equals(username) && "asd123".equals(password)){
return mapping.findForward("loginSuccess");
}
//不匹配,跳转到登录失败页
return mapping.findForward("loginFail");
}
准备就绪,启动Tomcat,在浏览器中访问登录页:
http://localhost:8080/SSH/jsp/login.jsp
SSH框架搭建详细图文教程
看到这个界面,都是英文,很不爽,不仅仅因为丑。

把它改成中文的,打开login.jsp,代码如下: <%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/tags-bean" prefix="bean"%>
<%@ taglib uri="/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="/login">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/> <html:submit/><html:cancel/>
</html:form>
</body>
</html>
->属性->
//获取用户信息
ClassPathXmlApplicationContext beans = new ClassPathXmlApplicationContext("../applicationContext.xml");
System.out.println(beans);
//帐号密码匹配,跳转到登录成功页
if("asd".equals(username) && "asd123".equals(password)){
return mapping.findForward("loginSuccess");
}
//不匹配,跳转到登录失败页
return mapping.findForward("loginFail");
}
重新启动Tomcat服务器,访问登录页http://localhost:8080/SSH/jsp/login.jsp,点击登录:
页面不再报错,正常跳转,控制台也输出了:
org.springframework.context.support.ClassPathXmlApplicationContext@14bb075: startup date [Mon Apr 22 14:26:58 CST 2013]; root of context hierarchy]
路径的问题解决了,正确的获取到了配置信息,这个配置信息我们以后要经常用,并且没必要每次用的时候都把它创建出来,浪费时间,写一个全局变量保存它吧。

在src下新建一个包mon,在包里新建一package mon;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Global {
public static ClassPathXmlApplicationContext beans = new ClassPathXmlApplicationContext("../applicationContext.xml");
public static Object getDAO(String daoName){
return beans.getBean(daoName);
}
}
现在来获取数据库里的数据,在user表里新增一个用户信息
username=asd
password=asd123
nickname=中文不是乱码
把LoginAction里的代码改为:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
//获取帐号密码
String username = loginForm.getUsername();
String password = loginForm.getPassword();
//检查该用户是否存在
User instance = new User();
instance.setUsername(username);
instance.setPassword(password);
UserDAO userDAO = (UserDAO)Global.getDAO("UserDAO");
List<?> list = userDAO.findByExample(instance);
//如果用户存在,则登录成功。

if(list.size() > 0){
User user = (User)list.get(0);
String nickname = user.getNickname();
//写入提示信息
request.setAttribute("message", "您的昵称为:" + nickname);
return mapping.findForward("loginSuccess");
}
//不匹配,跳转到登录失败页
return mapping.findForward("loginFail");
}
在loginSuccess.jsp的Body中添加一行代码:
<%=request.getAttribute("message")%><br>
重新启动Tomcat服务器,访问登录页http://localhost:8080/SSH/jsp/login.jsp
填写帐号:asd 密码:asd123 点击登录:
SSH框架搭建详细图文教程
登录功能完成,这是个SSH框架的搭建教程,这些测试功能就尽量简单了,大家别介意,下面来做注册功能。

切换到struts-config.xml的设计视图,右键New->Form,Action and JSP
SSH框架搭建详细图文教程
Use case填写register
Form Properties填写3个属性
username:text
password:password
nickname:text
SSH框架搭建详细图文教程
点选JSP选项,勾选Create JSP form, 路径更改为/jsp/register.jsp
现在把register.jsp与login.jsp关联,做注册成功和注册失败的跳转。

右键struts-config.xml设计视图中的regiser.jsp->New->Forward。

选择Local Action Forward
Action Path:/register
Name:registerSuccess
Path:/jsp/login.jsp
完成
SSH框架搭建详细图文教程
SSH框架搭建详细图文教程
右键struts-config.xml设计视图中的regiser.jsp->New->Forward。

选择Local Action Forward
Action Path:/register
Name:registerFail
Path:/jsp/register.jsp
完成
struts-config.xml代码如下
SSH框架搭建详细图文教程
汉化注册页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/tags-bean" prefix="bean"%>
<%@ taglib uri="/tags-html" prefix="html"%>
<html>
<head>
<title>注册页</title>
</head>
<body>
<html:form action="/register">
用户名 : <html:text property="username"/><html:errors property="username"/><br/>
密码 : <html:password property="password"/><html:errors property="password"/><br/>昵称 : <html:text property="nickname"/><html:errors property="nickname"/><br/>
<html:submit value="确定"/><html:cancel value="取消"/>
</html:form>
</body>
</html>
打开RegisterAction.java文件,实现数据的插入,修改代码如下:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//填写的注册信息
RegisterForm registerForm = (RegisterForm) form;
String username = registerForm.getUsername();
String password = registerForm.getPassword();
String nickname = registerForm.getNickname();
//检查用户名是否已被注册
UserDAO userDAO = (UserDAO)Global.getDAO("UserDAO");
List<?> list = userDAO.findByUsername(username);
//用户名已被注册,返回注册页面
if(list.size() > 0){
request.setAttribute("message", "该用户名已被注册");
return mapping.findForward("registerFail");
}
//插入新用户
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setNickname(nickname);
userDAO.save(user);
request.setAttribute("message", "注册成功,请登录:" + nickname);
return mapping.findForward("registerSuccess");
}
打开login.jsp在body中添加一行代码<%=request.getAttribute("message")%><br>
重新启动Tomcat服务器,访问注册页http://localhost:8080/SSH/jsp/register.jsp
输入帐号:asd2
输入密码:asd123
输入昵称:中文不应该是乱码
点击确认
SSH框架搭建详细图文教程
页面提示:注册成功,请登录:??-?–?????o”èˉ¥??ˉ?1±?
我们期望的是"中文不应该是乱码",但它变成乱码了,很常见的一种问题。

百度查了一下相关问题,原因是使用Tomcat服务器时,struts的Form提交不支持中文,于是我们需要添加一个过滤器?。

在mon包下新建一个TomcatFormFilter类,代码如下:
package mon;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class TomcatFormFilter implements Filter{
//接收字符编码
protected String encoding;
public TomcatFormFilter(){}
public void init(FilterConfig filterConfig) throws ServletException {
//从web.xml中读取encoding值
encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(request.getCharacterEncoding() == null && encoding != null){
//设置字符集
request.setCharacterEncoding(encoding);
}
//继续执行
chain.doFilter(request, response);
}
public void destroy() {}
}
拷贝这个类中注释代码部分的xml,粘贴到web.xml中
SSH框架搭建详细图文教程
重新启动Tomcat服务器,访问注册页http://localhost:8080/SSH/jsp/register.jsp
输入帐号:asd3
输入密码:asd123
输入昵称:这回中文不应该是乱码了
点击确定
SSH框架搭建详细图文教程
至此SSH框架的搭建全部完成。

相关文档
最新文档