SSH搭建

问题:

既然开始学习搭建SSH框架了,就必须对其3个框架起到的作用有一定的了解。

1.struts2------替代了原来servlet的作用,对Http的请求进行处理和逻辑验证。

2.spring-------相当于中间商的作用,它把hibernate的配置文件并把一些依赖属性进行赋值,实现了很大的分层作用,让耦合性大大降低。

3.Hibernate的作用替代了原来JDBC的编写,他的优势就在于能够进行映射的处理,从而大大优化了与数据库的连接。

这是我现在所了解的SSH里的3大技术,因为是学习第一遍所以还不够深刻,现在我在做SSH框架塔的唐诗搜索网站,先对原来做的Hibernate技术 和 Struts2技术实现的唐诗查找系统进行总结。


工程名PoatQueryStruts(Struts2+JDBC技术)

包: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 {// 用工厂类进行数据库连接还有数据库搜索操作,返回结果储存在迭代器里Listall = DAOFactory.getIPoetriesDaoInstance().findPoertries(queryType, queryContent);

// 将迭代器存进Session里面,进行数据共享

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;

}

```

包com.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("配置文件读取错误!");

}

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配置文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 一套完整的登陆注册业务逻辑 准备部分基础工具类Basepackage com.jericho.tools;impo...
    JerichoPH阅读 2,423评论 0 9
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,505评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,544评论 1 114
  • 大二上的时候选修英语选修课,无奈错过了刚开始选课的时候,就算了英美诗歌鉴赏,我不得不说这个选修课从一开始一下...
    梁鸽鸽free阅读 1,265评论 0 0