一步一教你搭建SSH框架,實(shí)現(xiàn)簡單的增刪改查功能

一步一教你搭建SSH框架力喷,實(shí)現(xiàn)簡單的增刪改查功能

一刽漂、首先創(chuàng)建一個(gè)Java web項(xiàng)目演训,并按下圖建好項(xiàng)目目錄

二弟孟、在網(wǎng)上搜索ssh所需jar包,并將其放到WEB_INF下的lib里面(這里截圖了部分)

三样悟、如下圖配置web.xml(添加spring監(jiān)聽器以及struts過濾器等)


ssh

index.jsp



OpenSessionInView

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

singleSession

true

OpenSessionInView

/*


setCharactor

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

setCharactor

/*


struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

*.do

*.jsp

FORWARD

REQUEST

INCLUDE


contextConfigLocation

/WEB-INF/classes/applicationContext.xml



org.springframework.web.context.ContextLoaderListener

四拂募、在bo包建立User實(shí)體類及其Hibernate映射文件

User.java

package com.suo.bo;

/**

* User entity. @author MyEclipse Persistence Tools

*/

public class User implements java.io.Serializable {

// Fields

private Integer id;

private String name;

private String password;

private String email;

private String address;

// Property accessors

public Integer getId() {

return this.id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return this.name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return this.password;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return this.email;

}

public void setEmail(String email) {

this.email = email;

}

public String getAddress() {

return this.address;

}

public void setAddress(String address) {

this.address = address;

}

}

User類的Hibernate映射文件User.hbm.xml


"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">


Mapping file autogenerated by MyEclipse Persistence Tools

-->

五庭猩、Dao層編寫? (該層用于數(shù)據(jù)的持久化操作)

UserDAO.java

package com.suo.dao;

import com.suo.bo.User;

public interface UserDAO {

/**

* 保存

* @param user

*/

void saveUser(User user);

/**

* 更新

* @param user

*/

void updateUser(User user);

/**

* 刪除

*/

void deleteUser(User user);

/**

* 查詢

* @return

*/

User queryUserbyName(String name);

}

UserDAO.Java

package com.suo.dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.suo.bo.User;

import com.suo.dao.UserDAO;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

@Override

public void saveUser(User user) {

// TODO Auto-generated method stub

getHibernateTemplate().save(user);

}

@Override

public void updateUser(User user) {

// TODO Auto-generated method stub

getHibernateTemplate().update(user);

}

@Override

public void deleteUser(User user) {

// TODO Auto-generated method stub

getHibernateTemplate().delete(user);

}

@Override

public User queryUserbyName(String name) {

// TODO Auto-generated method stub

String queryString="from User t where t.name=?";

// return (User)getHibernateTemplate().find(queryString,new String[]{name}).get(0);

return (User) getHibernateTemplate().find(queryString, name).get(0);

}

}

六、Service層編寫(該層用于數(shù)據(jù)的業(yè)務(wù)處理)

UserService.java

package com.suo.service;

import com.suo.bo.User;

public interface UserService {

void save(User user);

User queryUserbyName(String name);

void updateUser(User user);

void deleteUser(String name);

}

UserServiceImpl.java

package com.suo.service.impl;

import com.suo.bo.User;

import com.suo.dao.UserDAO;

import com.suo.service.UserService;

public class UserServiceImpl implements UserService{

private UserDAO userDAO;

@Override

public void save(User user) {

// TODO Auto-generated method stub

userDAO.saveUser(user);

}

@Override

public User queryUserbyName(String name) {

// TODO Auto-generated method stub

return userDAO.queryUserbyName(name);

}

@Override

public void updateUser(User user) {

// TODO Auto-generated method stub

User userdata=userDAO.queryUserbyName(user.getName());

userdata.setAddress(user.getAddress());

userdata.setEmail(user.getEmail());

userdata.setPassword(user.getPassword());

userDAO.updateUser(userdata);

}

@Override

public void deleteUser(String name) {

// TODO Auto-generated method stub

User user=userDAO.queryUserbyName(name);

userDAO.deleteUser(user);

}

public UserDAO getUserDAO() {

return userDAO;

}

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

}

七陈症、Action編寫

package com.suo.action;

import com.opensymphony.xwork2.ActionSupport;

import com.suo.bo.User;

import com.suo.service.UserService;

public class UserAction extends ActionSupport{

/**

*

*/

private static final long serialVersionUID = 1L;

private UserService userService;

private User user;

private String name;

public String save(){

userService.save(user);

return "add_success";

}

public String queryUserbyName(){

user? =userService.queryUserbyName(name);

return "query_success";

}

public String deleteUser(){

userService.deleteUser(name);

return "delete_success";

}

public String updateUser(){

String str=user.getName();

//更改前preUser

User preuUser=userService.queryUserbyName(str);

userService.updateUser(user);

//更改后user

User afteruser=userService.queryUserbyName(str);

return "update_success";

}

public UserService getUserService() {

return userService;

}

public void setUserService(UserService userService) {

this.userService = userService;

}

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

八蔼水、在hibernate.properties中配置數(shù)據(jù)相關(guān)數(shù)據(jù),以及在applicationContext.xml中配置Spring管理


xmlns="http://www.springframework.org/schema/beans"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">


class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

classpath:hibernate.properties


class="org.springframework.jdbc.datasource.DriverManagerDataSource">

${mysql.database.driver_class}

${mysql.database.url}

${mysql.database.username}

${mysql.database.password}


class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

org.hibernate.dialect.MySQL5Dialect

classpath:com/suo/bo



PROPAGATION_NOT_SUPPORTED

PROPAGATION_NOT_SUPPORTED

PROPAGATION_NOT_SUPPORTED

PROPAGATION_NOT_SUPPORTED

PROPAGATION_NOT_SUPPORTED

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED




九录肯、Struts.xml文件的編寫


"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd"

>


/add_success.jsp

/delete_success.jsp

/update_success.jsp

/query_success.jsp

十趴腋、前端Jsp頁面的編寫

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'index.jsp' starting page


-->

ssh框架整合學(xué)習(xí)demo

新增

名稱:

密碼:

郵箱:

住址:?

?

查詢

名稱:

?

修改

名稱:

密碼:

郵箱:

住址:?

?

刪除

名稱:

?

query_success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'query_success.jsp' starting page


-->

查詢成功实昨!

查詢結(jié)果

名字 :

密碼:

郵箱:

住址:?

其他的前端jsp類似? 就不在寫了

源碼下載地址:點(diǎn)擊打開鏈接

十一命咐、部署運(yùn)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茬暇,一起剝皮案震驚了整個(gè)濱河市憨琳,隨后出現(xiàn)的幾起案子例朱,更是在濱河造成了極大的恐慌羞福,老刑警劉巖堤结,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箍土,死亡現(xiàn)場離奇詭異养涮,居然都是意外死亡葵硕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門贯吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懈凹,“玉大人,你說我怎么就攤上這事宣决≌号” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵尊沸,是天一觀的道長威沫。 經(jīng)常有香客問我,道長洼专,這世上最難降的妖魔是什么棒掠? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮屁商,結(jié)果婚禮上烟很,老公的妹妹穿的比我還像新娘。我一直安慰自己蜡镶,他們只是感情好雾袱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著官还,像睡著了一般芹橡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上望伦,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天林说,我揣著相機(jī)與錄音煎殷,去河邊找鬼。 笑死腿箩,一個(gè)胖子當(dāng)著我的面吹牛豪直,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播珠移,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼弓乙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钧惧?” 一聲冷哼從身側(cè)響起唆貌,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垢乙,沒想到半個(gè)月后锨咙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡追逮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年酪刀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钮孵。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骂倘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巴席,到底是詐尸還是另有隱情历涝,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布漾唉,位于F島的核電站荧库,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赵刑。R本人自食惡果不足惜分衫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望般此。 院中可真熱鬧蚪战,春花似錦、人聲如沸铐懊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽科乎。三九已至壁畸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喜喂,已是汗流浹背瓤摧。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玉吁,地道東北人照弥。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像进副,于是被迫代替她去往敵國和親这揣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容