SSH搭建

問題:

既然開始學(xué)習(xí)搭建SSH框架了,就必須對(duì)其3個(gè)框架起到的作用有一定的了解椭住。

1.struts2------替代了原來servlet的作用,對(duì)Http的請(qǐng)求進(jìn)行處理和邏輯驗(yàn)證。

2.spring-------相當(dāng)于中間商的作用剖淀,它把hibernate的配置文件并把一些依賴屬性進(jìn)行賦值,實(shí)現(xiàn)了很大的分層作用节猿,讓耦合性大大降低骂铁。

3.Hibernate的作用替代了原來JDBC的編寫,他的優(yōu)勢就在于能夠進(jìn)行映射的處理罩抗,從而大大優(yōu)化了與數(shù)據(jù)庫的連接拉庵。

這是我現(xiàn)在所了解的SSH里的3大技術(shù),因?yàn)槭菍W(xué)習(xí)第一遍所以還不夠深刻套蒂,現(xiàn)在我在做SSH框架塔的唐詩搜索網(wǎng)站钞支,先對(duì)原來做的Hibernate技術(shù) 和 Struts2技術(shù)實(shí)現(xiàn)的唐詩查找系統(tǒng)進(jìn)行總結(jié)。


工程名PoatQueryStruts(Struts2+JDBC技術(shù))

包:com.wyt.action

```

package com.wyt.action;import java.util.List;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import com.wyt.factory.DAOFactory;import com.wyt.vo.Poetries;public class QueryAction extends ActionSupport {/** *? */private static final long serialVersionUID = 1L;private int queryType;private String queryContent;public String execute() throws Exception {// 用工廠類進(jìn)行數(shù)據(jù)庫連接還有數(shù)據(jù)庫搜索操作,返回結(jié)果儲(chǔ)存在迭代器里L(fēng)istall = DAOFactory.getIPoetriesDaoInstance().findPoertries(queryType, queryContent);

// 將迭代器存進(jìn)Session里面,進(jìn)行數(shù)據(jù)共享

ServletRequest request = ServletActionContext.getRequest();

HttpServletRequest req = (HttpServletRequest) request;

req.setAttribute("queryType", queryType);

HttpSession session = req.getSession();

session.setAttribute("result", all);

if (all.isEmpty()) {

return "fail";

} else {

return "success";

}

}

public int getQueryType() {

return queryType;

}

public void setQueryType(int queryType) {

this.queryType = queryType;

}

public String getQueryContent() {

return queryContent;

}

public void setQueryContent(String queryContent) {

this.queryContent = queryContent;

}

}

```

包:com.wyt.dao

```

package com.wyt.dao;import java.util.List;import com.wyt.vo.Poetries;public interface IPoetriesDao {public ListfindPoertries(int querType,String queryContent)throws Exception;

}

```

包c(diǎn)om.wyt.dao.impl

```

package com.wyt.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;import com.wyt.dao.IPoetriesDao;import com.wyt.vo.Poetries;public class PoetriesDaoImpl implements IPoetriesDao {private Connection conn = null;private PreparedStatement pstmt = null;public PoetriesDaoImpl(Connection conn) {this.conn = conn;}public ListfindPoertries(int queryType,String queryContent) throws Exception {Listall = new ArrayList();

String sql = "SELECT name,title,content "

+ "from poetries pt LEFT JOIN poets p on pt.poet_id = p.id where ";

//String hql = "select SUBSTRING(p.content,1,15) from Poetries p where p.poets.name=:poetName";

switch (queryType) {

case 1:

sql = sql+" name = ?";

break;

case 2:

sql = sql+"title LIKE ?";

queryContent = "%"+queryContent+"%";

break;

default:

sql = sql+"content LIKE ?";

queryContent = "%"+queryContent+"%";

break;

}

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, queryContent);

ResultSet rs = pstmt.executeQuery();

Poetries poetries? = null;

while(rs.next()){

poetries = new Poetries();

poetries.setName(rs.getString(1));

poetries.setTitle(rs.getString(2));

poetries.setContent(rs.getString(3));

all.add(poetries);

}

pstmt.close();

return all;

}

}

```

包:com.wyt.dao.proxy

```

package com.wyt.dao.proxy;import java.sql.Connection;import java.util.List;import com.wyt.dao.IPoetriesDao;import com.wyt.dao.impl.PoetriesDaoImpl;import com.wyt.util.ConnectionFactory;import com.wyt.vo.Poetries;public class PoetriesDaoProxy implements IPoetriesDao {private Connection conn = null;private IPoetriesDao dao = null;public PoetriesDaoProxy() {this.conn = ConnectionFactory.getInstance().makeConnection();this.dao = new PoetriesDaoImpl(this.conn);}public ListfindPoertries(int querType, String queryContent) throws Exception {Listall = null;

try{

all = this.dao.findPoertries(querType, queryContent);

}catch(Exception e){

throw e;

}finally{

this.conn.close();

}

return all;

}

}

```

包:com.wyt.factory

```

package com.wyt.factory;

import com.wyt.dao.IPoetriesDao;

import com.wyt.dao.proxy.PoetriesDaoProxy;

public class DAOFactory {

public static IPoetriesDao getIPoetriesDaoInstance()throws Exception{

return new PoetriesDaoProxy();

}

}

```

包名:com.wyt.util

```

package com.wyt.util;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.Properties;

public class ConnectionFactory {

private static String driver;

private static String dburl;

private static String user;

private static String password;

private Connection conn = null;

private static final ConnectionFactory FACTORY =new ConnectionFactory();

static{

Properties prop= new Properties();

try {

InputStream in = ConnectionFactory.class.getClassLoader()

.getResourceAsStream("dbConfig.properties");

prop.load(in);

} catch (Exception e) {

System.out.println("配置文件讀取錯(cuò)誤操刀!");

}

driver = prop.getProperty("driver");

dburl = prop.getProperty("dburl");

System.out.println(dburl);

user = prop.getProperty("user");

password = prop.getProperty("password");

}

public Connection makeConnection(){

try {

Class.forName(driver);

conn = DriverManager.getConnection(dburl,user,password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

public static ConnectionFactory getInstance(){

return FACTORY;

}

public void close() throws Exception{

if(this.conn != null)

try {

this.conn.close();

} catch (Exception e) {

throw e;

}

}

}

```

包名:com.wyt.vo

```

package com.wyt.vo;

public class Poetries {

private String title;

private String name;

private String content;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

```

struts.xml配置文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烁挟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子骨坑,更是在濱河造成了極大的恐慌撼嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欢唾,死亡現(xiàn)場離奇詭異且警,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)礁遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門斑芜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祟霍,你說我怎么就攤上這事杏头。” “怎么了沸呐?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵醇王,是天一觀的道長。 經(jīng)常有香客問我垂谢,道長厦画,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任滥朱,我火速辦了婚禮根暑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘徙邻。我一直安慰自己排嫌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布缰犁。 她就那樣靜靜地躺著淳地,像睡著了一般怖糊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颇象,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天伍伤,我揣著相機(jī)與錄音,去河邊找鬼遣钳。 笑死扰魂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕴茴。 我是一名探鬼主播劝评,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倦淀!你這毒婦竟也來了蒋畜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤撞叽,失蹤者是張志新(化名)和其女友劉穎姻成,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愿棋,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佣渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了初斑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辛润。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖见秤,靈堂內(nèi)的尸體忽然破棺而出砂竖,到底是詐尸還是另有隱情,我是刑警寧澤鹃答,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布乎澄,位于F島的核電站,受9級(jí)特大地震影響测摔,放射性物質(zhì)發(fā)生泄漏置济。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一锋八、第九天 我趴在偏房一處隱蔽的房頂上張望浙于。 院中可真熱鬧,春花似錦挟纱、人聲如沸羞酗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檀轨。三九已至胸竞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間参萄,已是汗流浹背卫枝。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讹挎,地道東北人剃盾。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像淤袜,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衰伯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理铡羡,服務(wù)發(fā)現(xiàn)意鲸,斷路器,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 一套完整的登陸注冊(cè)業(yè)務(wù)邏輯 準(zhǔn)備部分基礎(chǔ)工具類Basepackage com.jericho.tools;impo...
    JerichoPH閱讀 2,449評(píng)論 0 9
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法怎顾,類相關(guān)的語法,內(nèi)部類的語法槐雾,繼承相關(guān)的語法,異常的語法募强,線程的語...
    子非魚_t_閱讀 31,632評(píng)論 18 399
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡單原理和應(yīng)用株灸。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,592評(píng)論 1 114
  • 大二上的時(shí)候選修英語選修課田晚,無奈錯(cuò)過了剛開始選課的時(shí)候玄括,就算了英美詩歌鑒賞肉瓦,我不得不說這個(gè)選修課從一開始一下...
    梁鴿鴿free閱讀 1,285評(píng)論 0 0