📄 让第一个ssh2跑起来.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0037)http://radovi.javaeye.com/blog/366306 -->
<HTML dir=ltr xml:lang="zh-CN"
xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>让第一个ssh2跑起来 - 老 男 孩 - JavaEye技术网站</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META
content="今天在寝室窝了一天,由于前天老师给了个ss2+toplink的项目源码,要我去消化。直接看那三个整合具吃力,于是先从ssh2入手吧! 所使用的工具和环境。 jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2 好了,开始我们的第一个ssh2之旅吧。 首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张表单,让你填写用户 ..."
name=description>
<META content="struts2,spring2,hibernate3,整合 让第一个ssh2跑起来" name=keywords><LINK
href="/images/favicon.ico" type=image/x-icon rel="shortcut icon"><LINK
title=" 老 男 孩" href="/rss" type=application/rss+xml rel=alternate><LINK
media=screen href="让第一个ssh2跑起来.files/blog.css" type=text/css
rel=stylesheet><LINK media=screen href="让第一个ssh2跑起来.files/black.css"
type=text/css rel=stylesheet>
<SCRIPT src="让第一个ssh2跑起来.files/application.js" type=text/javascript></SCRIPT>
<LINK media=screen href="让第一个ssh2跑起来.files/SyntaxHighlighter.css" type=text/css
rel=stylesheet>
<SCRIPT src="让第一个ssh2跑起来.files/shCoreCommon.js" type=text/javascript></SCRIPT>
<SCRIPT src="让第一个ssh2跑起来.files/hotkey.js" type=text/javascript></SCRIPT>
<STYLE>DIV#main {
BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; WIDTH: 740px; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; BORDER-RIGHT-WIDTH: 0px
}
</STYLE>
<META content="MSHTML 6.00.2900.5726" name=GENERATOR></HEAD>
<BODY>
<DIV id=header>
<DIV id=blog_site_nav><A class=homepage href="http://www.javaeye.com/">首页</A> <A
href="http://www.javaeye.com/news">新闻</A> <A
href="http://www.javaeye.com/forums">论坛</A> <A
href="http://www.javaeye.com/blogs">博客</A> <A
href="http://job.javaeye.com/">招聘</A> <A id=msna onclick="return false;"
href="http://radovi.javaeye.com/blog/366306#"><U>更多</U> <SMALL>▼</SMALL></A>
<DIV class=quick_menu style="DISPLAY: none"><A
href="http://www.javaeye.com/ask">问答</A> <A
href="http://www.javaeye.com/wiki">知识库</A> <A
href="http://www.javaeye.com/groups">圈子</A> <A
href="http://www.javaeye.com/search">搜索</A> </DIV></DIV>
<DIV id=user_nav><A class=welcome title=查看我的博客首页
href="http://jrqjrq.javaeye.com/">欢迎 jrqjrq</A> <A title=发送站内短信
href="http://app.javaeye.com/messages">收件箱</A> <A title=我的应用首页
href="http://app.javaeye.com/">我的应用</A>
<DIV class=quick_menu style="DISPLAY: none"><A
href="http://app.javaeye.com/feed">我的订阅</A> <A
href="http://app.javaeye.com/feed/my">我的参与</A> <A
href="http://app.javaeye.com/chat">我的闲聊</A> <A
href="http://app.javaeye.com/mygroup">我的圈子</A> <A
href="http://app.javaeye.com/links">我的收藏</A> </DIV><A title=管理我的博客
href="http://jrqjrq.javaeye.com/admin">我的博客</A> <A
href="http://app.javaeye.com/profile">设置</A> <A class=nobg
onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'put'); f.appendChild(m);f.submit();return false;"
href="http://radovi.javaeye.com/logout">退出</A> </DIV></DIV>
<DIV id=page>
<DIV class=clearfix id=branding>
<DIV id=blog_name>
<H1><A href="http://radovi.javaeye.com/">老 男 孩</A></H1></DIV>
<DIV id=blog_preview></DIV>
<DIV id=blog_domain>永久域名 <A
href="http://radovi.javaeye.com/">http://radovi.javaeye.com/</A></DIV></DIV>
<DIV class=clearfix id=content>
<DIV id=main>
<DIV class=blog_main>
<DIV id=blog_nav>
<DIV class=digg id=b366306>
<H3><A class=digg onclick="digg_blog(366306);return false;"
href="http://radovi.javaeye.com/blog/366306#">7顶</A><BR><A class=bury
onclick="bury_blog(366306);return false;"
href="http://radovi.javaeye.com/blog/366306#">2踩</A></H3></DIV>
<DIV id=pre_next><A class=pre
href="http://radovi.javaeye.com/blog/365174">javaeye第五届问答大赛获奖感言</A> </DIV></DIV>
<DIV class=blog_title>
<DIV class=date><SPAN class=year>2009</SPAN><SPAN class=sep_year>-</SPAN><SPAN
class=month>04</SPAN><SPAN class=sep_month>-</SPAN><SPAN
class=day>13</SPAN></DIV>
<H3 class=type_original title=原创><A
href="http://radovi.javaeye.com/blog/366306">让第一个ssh2跑起来</A></H3><STRONG>关键字:
struts2,spring2,hibernate3,整合</STRONG> </DIV>
<DIV
class=blog_content>今天在寝室窝了一天,由于前天老师给了个ss2+toplink的项目源码,要我去消化。直接看那三个整合具吃力,于是先从ssh2入手吧!
<BR>所使用的工具和环境。 <BR>jdk6+myeclipse6.5+tomcat6+mysql5+spring2.0+hibernate3+struts2
<BR><BR>好了,开始我们的第一个ssh2之旅吧。
<BR><BR>首先先分析一下我们的第一个ssh2项目的需求,简单的说就是有一张表单,让你填写用户名和密码,提交后存入数据库。就这么简单,呵呵。
<BR><BR><SPAN style="COLOR: red">第一步:。</SPAN>我们首先新建一张mysql数据表 <BR>sql如下
<BR>CREATE TABLE mytest.users ( <BR> id INT NOT NULL,
<BR> username VARCHAR(50), <BR> password VARCHAR(50),
<BR> PRIMARY KEY (id) <BR>数据表创建好后结构如下: <BR><IMG
src="让第一个ssh2跑起来.files/5b44b28b-0285-3bc4-a02f-ab43861134a4.jpg">
<BR>当然我已经有几天数据添加进去了 <BR><BR><IMG
src="让第一个ssh2跑起来.files/2906ef4c-28ca-350e-a534-b655eda059a8.jpg"> <BR><BR><SPAN
style="COLOR: red">第二步</SPAN> <BR>打开myeclipse,新建一个web项目,命名为ssh2-2, java
ee规范我们选择5,如图 <BR><BR><BR><IMG
src="让第一个ssh2跑起来.files/247dbe85-1e89-35f1-8b05-60df442d39ec.jpg">
<BR><BR><STRONG><SPAN style="COLOR: red">第三步 务必小心的一步</SPAN></STRONG>
<BR>导入ssh2的各个jar,步骤如下: <BR>选中当前的项目后,点击菜单烂的myeclipse---project capablities----add
hibernate项,跳出如图 <BR><BR><IMG
src="让第一个ssh2跑起来.files/f0e22b3a-196e-391a-bd1a-c1d4561330f5.jpg">
<BR>务必按照图示选择,尤其是copy checkde……一项,然后点击next,默认next,去掉specify
database……复选框,next,去掉create session……复选框,finish。
<BR><BR>再次选中选中当前的项目后,点击菜单烂的myeclipse---project capablities----add spring项,跳出如图
<BR><IMG src="让第一个ssh2跑起来.files/fe34b346-2165-33e2-9ede-753346c8b0ec.png">
<BR><BR><BR>依然务必按照如是选择,jar文件选择如下5个: <BR><BR><IMG
src="让第一个ssh2跑起来.files/6a4570e8-1c02-3f2b-8a03-5fe409881380.jpg"> <BR><BR><IMG
src="让第一个ssh2跑起来.files/e3389717-3280-3e97-ab5f-e829ba060f87.jpg"> <BR>点击next,
<BR>之后按下选择,务必, <BR><BR><IMG
src="让第一个ssh2跑起来.files/4d1f7daf-f9c7-3197-9cfe-1177a7f8a3b8.jpg">
<BR>next后finsh即可。 <BR>然后导入struts2的jar <BR>如下5个放到lib下 <BR><IMG
src="让第一个ssh2跑起来.files/433260c7-a3bb-3937-aa23-d38e72748f03.jpg">
<BR>然后放入我们的数据库驱动jar mysql-connector-java-5.0.8-bin.jar 没得话附件中有 <BR><BR>至此,包都导入完毕
<BR><BR><SPAN style="COLOR: darkred">第四步</SPAN> <BR>配置web.xml 代码如下 注意注释: <BR><PRE class=xml name="code"><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- struts2的常规配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 在web应用启动是自动形成一个spring容器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
</PRE><BR><BR><SPAN style="COLOR: darkred">第五步:</SPAN>
<BR>从视图层入手;在webroot目录下新建一个save.jsp文件 <BR>如下代码; <BR><PRE class=jsp name="code"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'save.jsp' starting page</title>
</head>
<body>
<s:form action='saveUser'>
<s:textfield name="user.username" label="用名"></s:textfield>
<s:textfield name="user.password" label="密码"></s:textfield>
<s:submit></s:submit>
</s:form>
</body>
</html>
</PRE><BR>接下去顺水推舟,自然开发action,及控制层 <BR>新建包com.test.action.user
<BR>新建一个SaveUserAction.java 代码初步如下: <BR><PRE class=java name="code">package com.test.action.user;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
public class SaveUserAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception
{
return SUCCESS;
}
}
</PRE><BR>于是,自然我们要新建一个bean <BR>新建包com.test.bean 新建User.java <BR><PRE class=java name="code">package com.test.bean;
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
}
</PRE><BR><BR>好了,现在我们先把控制层的action放在这里,开发业务层和持久层(DAO) <BR><BR>新建包com.test.dao
<BR>建类UserDAO.java <BR>代码如下:<PRE class=java name="code">package com.test.dao;
import java.util.List;
import com.test.bean.User;
public interface UserDAO
{
public void saveUser(User user);
public void removeUser(User user);
public User findUserById(Integer id);
public List<User> findAllUsers();
public void updateUser(User user);
}
</PRE>这是一个接口 <BR>在开发dao的实现类 <BR>新建包com.test.dao.impl <BR>建类UserDAOImpl.java
<BR>代码: <BR><PRE class=java name="code">package com.test.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.test.bean.User;
import com.test.dao.UserDAO;
/**
*
* @author Administrator
* 这个dao试用了hibernate的数据库操作语句
*/
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
/*
* 获取所有数据
*/
public List<User> findAllUsers() {
String hql = "from User user order by user.id desc";
return (List<User>) this.getHibernateTemplate().find(hql);
}
/*
* 获取指定的数据
*/
public User findUserById(Integer id) {
User user = (User) this.getHibernateTemplate().get(User.class, id);
return user;
}
public void removeUser(User user) {
this.getHibernateTemplate().delete(user);
}
public void saveUser(User user) {
this.getHibernateTemplate().save(user);
}
public void updateUser(User user) {
this.getHibernateTemplate().update(user);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -