SSH2实例编写(继DAO MVC后又一力作!)
今天第一次编写SSH2的实例,如果有什么问题,欢迎各位提出并提出。
以帮助我这个菜鸟解决发生的错误和问题。
首先来介绍一下这个项目。
这个项目是采用了base的方式进行继承。
项目名称:Test_ssh2
数据库名称:exedtest
首先来看一下我所建立的包。
然后再看一下我的数据库设计:
首先我们先从建立vo类开始:
首先我们要在DB Browser 建立数据库连接,并且使其连接成功!
然后我们要建立好数据库,并且添加hibernate支持。
然后进入DB Browser 进行hibernate映射
然后就可以成功的建立vo及其子类了。
然后下一步是建立好各个类的包
并且在里面添加好你需要继承的base
添加好后,我们就可以开始进行工作了。
首先我们先加入pagemodel.java和pageview.java
pagemodel.java
package org.yzsoft.ssh2.util;
public class PageModel {
private int totalPage;//总页数
private int previousPageNo;//前一页
private int nextPageNo;//后一页
public int getNextPageNo() {
return nextPageNo;
}
public void setNextPageNo(int nextPageNo) {
this.nextPageNo = nextPageNo;
}
public int getPreviousPageNo() {
return previousPageNo;
}
public void setPreviousPageNo(int previousPageNo) {
this.previousPageNo = previousPageNo;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
}
pageview.java
package org.yzsoft.ssh2.util;
import java.util.List;
/**
* 封装分页对象
* @author Administrator
*
* @param <T>
*/
public class PageView<T> {
private List<T> pageList;
private int totalNo;//总记录数
private int pageNo; //当前页
private int pageSize;//每页显示记录数
private PageModel pm=new PageModel();
//取总页数
public int getTotalPage() {
// System.out.println(pageNo+" 分页控件类里面的总页数");
int totalPage = 0;
if(totalNo%pageSize==0) {
totalPage = totalNo/pageSize;
} else {
totalPage = totalNo/pageSize+1;
}
pm.setTotalPage(totalPage);
return totalPage;
}
//取上一页
public int getPreviousPageNo() {
int pagePrevious=0;
if(pageNo<=1) {
pagePrevious= pageNo;
} else {
pagePrevious=pageNo-1;
}
pm.setPreviousPageNo(pagePrevious);
return pagePrevious;
}
//取下一页
public int getNextPageNo() {
// System.out.println(pageNo+" 分页控件类里面的当前页");
int pageNext=0;
if(pageNo>=getTotalPage()){
pageNext= getTotalPage();
}else {
pageNext= pageNo+1;
}
pm.setNextPageNo(pageNext);
return pageNext;
}
//取最后页
public int getBackPageNo(){
return getTotalPage();
}
public List<T> getPageList() {
return pageList;
}
public void setPageList(List<T> pageList) {
this.pageList = pageList;
}
public int getTotalNo() {
return totalNo;
}
public void setTotalNo(int totalNo) {
this.totalNo = totalNo;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public PageModel getPm() {
return pm;
}
public void setPm(PageModel pm) {
this.pm = pm;
}
}
这两个是用于后面的分页的。
然后我们开始建立DAO接口
package org.yzsoft.ssh2.dao;
import org.yzsoft.ssh2.util.PageView;
import org.yzsoft.ssh2.vo.TStudinfo;
public interface IStudinfoDAO extends BaseDao {
public PageView<TStudinfo> findByPage(String keyword, int pageNo, int pageSize) throws Exception;
public boolean findLogin(TStudinfo tstudinfo) throws Exception;
public PageView<TStudinfo> findByPage(int pageNo, int pageSize) throws Exception;
}
然后进入真实类
package org.yzsoft.ssh2.impl;
import java.util.List;
import org.yzsoft.ssh2.dao.IStudinfoDAO;
import org.yzsoft.ssh2.util.PageView;
import org.yzsoft.ssh2.vo.TStudinfo;
public class StudinfoDAOImpl extends BaseDaoImpl implements IStudinfoDAO {
public PageView<TStudinfo> findByPage(String keyword, int pageNo,
int pageSize) throws Exception {
String hql = "from TStudinfo where name like ? or password like?";
Object[] objects = new Object[] { "%" + keyword + "%",
"%" + keyword + "%" };
return super.findByPage(hql, objects, pageNo, pageSize);
}
public boolean findLogin(TStudinfo tstudinfo) throws Exception {
String hql = "select count(*) from TStudinfo where name = ? and password=?";
Object[] objects = new Object[] { tstudinfo.getName(),
tstudinfo.getPassword() };
return (Long) super.getHibernateTemplate().find(hql, objects).get(0) > 0;
}
public PageView<TStudinfo> findByPage(int pageNo, int pageSize)
throws Exception {
// TODO Auto-generated method stub
return null;
}
}
然后就可以进入算是比较核心的action了
package org.yzsoft.ssh2.action;
import org.yzsoft.ssh2.dao.IStudinfoDAO;
import org.yzsoft.ssh2.util.PageView;
import org.yzsoft.ssh2.vo.TStudinfo;
public class StudinfoAction extends BaseAction {
private IStudinfoDAO dao = null;
private TStudinfo tstudinfo = null;
private PageView<TStudinfo> all = null;
public IStudinfoDAO getDao() {
return dao;
}
public void setDao(IStudinfoDAO dao) {
this.dao = dao;
}
public TStudinfo getTstudinfo() {
return tstudinfo;
}
public void setTstudinfo(TStudinfo tstudinfo) {
this.tstudinfo = tstudinfo;
}
public PageView<TStudinfo> getAll() {
return all;
}
public void setAll(PageView<TStudinfo> all) {
this.all = all;
}
/* 登陆查询 */
public String findLogin() {
try {
if (this.dao.findLogin(tstudinfo)) {// 如果有这个用户
all = this.dao.findByPage(keyword, pageNo, pageSize);
totalPage = this.dao.findByPage(keyword, pageNo, pageSize)
.getPm().getTotalPage();
System.out.println(all.getTotalNo() + " Ac 里面的总页数");
return "findAll1";
} else {
return "input";
}
} catch (Exception e) {
System.out.println("异常:" + e);
return "input";
}
}
/* 查询所有 */
public String findAll() {
try {
System.out.println(pageNo + " " + pageSize);
all = this.dao.findByPage(keyword, 1, 5);
totalPage = this.dao.findByPage(keyword, pageNo, pageSize).getPm()
.getTotalPage();
} catch (Exception e) {
System.out.println("异常:" + e);
}
return "findAll";
}
/* 插入记录 */
public String doCreate() {
try {
this.dao.doCreate(tstudinfo);// 对应页面name.的名字
all = this.dao.findByPage(keyword, pageNo, pageSize);
totalPage = this.dao.findByPage(keyword, pageNo, pageSize).getPm()
.getTotalPage();
} catch (Exception e) {
System.out.println("异常:" + e);
}
return "findAll";
}
/* 根据ID查找 */
public String findById() {
try {
tstudinfo = this.dao.findById(TStudinfo.class, tstudinfo.getId());
} catch (Exception e) {
System.out.println(e);
}
return "findById";
}
/* 更新记录 */
public String doUpdate() {
try {
this.dao.doUpdate(tstudinfo);
all = this.dao.findByPage(keyword, pageNo, pageSize);
totalPage = this.dao.findByPage(keyword, pageNo, pageSize).getPm()
.getTotalPage();
} catch (Exception e) {
System.out.println("异常:" + e);
}
return "findAll";
}
/* 删除记录 */
public String doDelete() {
try {
this.dao.doDelete(TStudinfo.class, tstudinfo.getId());
all = this.dao.findByPage(keyword, pageNo, pageSize);
totalPage = this.dao.findByPage(keyword, pageNo, pageSize).getPm()
.getTotalPage();
} catch (Exception e) {
System.out.println("异常:" + e);
}
return "findAll";
}
}
下面就可以开始做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+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="form1" method="post" action="studinfo_findLogin.action">
<table width="519" height="139" border="1" align="center" cellpadding="1" cellspacing="1">
<tr>
<td colspan="2">用户登录</td>
</tr>
<tr>
<td width="146">用户名:</td>
<td width="360"><label>
<input type="text" name="tstudinfo.name" id="tstudinfo.name">
</label></td>
</tr>
<tr>
<td>密码:</td>
<td><label>
<input type="password" name="tstudinfo.password" id="tstudinfo.password">
</label></td>
</tr>
<tr>
<td colspan="2"><label>
<input type="submit" name="button" id="button" value="登陆">
</label></td>
</tr>
</table>
</form>
</body>
</html>
然后是主页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="form1" method="post" action="studinfo_findAll.action">
<label>
<input type="text" name="keyword" id="keyword" value="${keyword}">
</label>
<label>
<input type="submit" name="button" id="button" value="OK-SOSO">
</label>
<table width="1180" height="110" border="1" cellpadding="1" cellspacing="1">
<tr>
<td width="33">id</td>
<td width="134">studentnumber</td>
<td width="114">name</td>
<td width="47">age</td>
<td width="117">password</td>
<td width="47">sex</td>
<td width="89">nation</td>
<td width="117">politics</td>
<td width="119">standya</td>
<td width="183">standby</td>
<td width="122"><a href="create.jsp">tianjia</a></td>
</tr>
<s:iterator value="all.pageList">
<tr>
<td>${id}</td>
<td>${studentnumber}</td>
<td>${name}</td>
<td>${age}</td>
<td>${password}</td>
<td>${sex}</td>
<td>${nation}</td>
<td>${politics}</td>
<td>${standya}</td>
<td>${standby}</td>
<td><a href="studinfo_findById.action?tstudinfo.id=${id }">update</a>|| <a href="studinfo_doDelete.action?tstudinfo.id=${id }">delete</a></td>
</tr>
</s:iterator>
</table>
<p> </p>
</form>
</body>
</html>
然后是修改页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'up.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="form1" method="post" action="studinfo_doUpdate.action">
<table width="341" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="119">studentnumber</td>
<td width="209"><label>
<input type="text" name="tstudinfo.studentnumber" id="tstudinfo.studentnumber" value="${tstudinfo.studentnumber}">
</label></td>
</tr>
<tr>
<td>name</td>
<td><input type="text" name="tstudinfo.name" id="tstudinfo.name"value="${tstudinfo.name}"></td>
</tr>
<tr>
<td>age</td>
<td><input type="text" name="tstudinfo.age" id="tstudinfo.age"value="${tstudinfo.age}"></td>
</tr>
<tr>
<td>password</td>
<td><input type="text" name="tstudinfo.password" id="tstudinfo.password"value="${tstudinfo.password}"></td>
</tr>
<tr>
<td>sex</td>
<td><input type="text" name="tstudinfo.sex" id="tstudinfo.sex"value="${tstudinfo.sex}"></td>
</tr>
<tr>
<td>nation</td>
<td><input type="text" name="tstudinfo.nation" id="tstudinfo.nation"value="${tstudinfo.nation}"></td>
</tr>
<tr>
<td>politics</td>
<td><input type="text" name="tstudinfo.politics" id="tstudinfo.politics"value="${tstudinfo.politics}"></td>
</tr>
<tr>
<td>standya</td>
<td><input type="text" name="tstudinfo.standya" id="tstudinfo.standya"value="${tstudinfo.standya}"></td>
</tr>
<tr>
<td>standby</td>
<td><input type="text" name="tstudinfo.standby" id="tstudinfo.standby"value="${tstudinfo.standby}"></td>
</tr>
<tr>
<td>technicainame</td>
<td><input type="text" name="tstudinfo.technicainame" id="tstudinfo.technicainame"value="${tstudinfo.technicainame}"></td>
</tr>
<tr>
<td>majorname</td>
<td><input type="text" name="tstudinfo.majorname" id="tstudinfo.majorname"value="${tstudinfo.majorname}"></td>
</tr>
<tr>
<td>birthday</td>
<td><input type="text" name="tstudinfo.birthday" id="tstudinfo.birthday"value="${tstudinfo.birthday}"></td>
</tr>
<tr>
<td>studylevels</td>
<td><input type="text" name="tstudinfo.studylevels" id="tstudinfo.studylevels"value="${tstudinfo.studylevels}"></td>
</tr>
<tr>
<td>phone</td>
<td><input type="text" name="tstudinfo.phone" id="tstudinfo.phone"value="${tstudinfo.phone}"></td>
</tr>
<tr>
<td>nativeplace</td>
<td><input type="text" name="tstudinfo.nativeplace" id="tstudinfo.nativeplace"value="${tstudinfo.nativeplace}"></td>
</tr>
<tr>
<td>identitycard</td>
<td><input type="text" name="tstudinfo.identitycard" id="tstudinfo.identitycard"value="${tstudinfo.identitycard}"></td>
</tr>
<tr>
<td>mailingaddress</td>
<td><input type="text" name="tstudinfo.mailingaddress" id="tstudinfo.mailingaddress"value="${tstudinfo.mailingaddress}"></td>
</tr>
<tr>
<td>isrecover</td>
<td><input type="text" name="tstudinfo.isrecover" id="tstudinfo.isrecover"value="${tstudinfo.isrecover}"></td>
</tr>
<tr>
<td>bigclass</td>
<td><input type="text" name="tstudinfo.bigclass" id="tstudinfo.bigclass"value="${tstudinfo.bigclass}"></td>
</tr>
<tr>
<td colspan="2"><label>
<input type="submit" name="button" id="button" value="ok">
</label></td>
</tr>
</table>
<input type="hidden" value="${tstudinfo.id}" name="tstudinfo.id"/>
</form>
</body>
</html>
然后是添加
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'create.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="form1" method="post" action="studinfo_doCreate.action">
<table width="341" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="119">studentnumber</td>
<td width="209"><label>
<input type="text" name="tstudinfo.studentnumber" id="tstudinfo.studentnumber">
</label></td>
</tr>
<tr>
<td>name</td>
<td><input type="text" name="tstudinfo.name" id="tstudinfo.name"></td>
</tr>
<tr>
<td>age</td>
<td><input type="text" name="tstudinfo.age" id="tstudinfo.age"></td>
</tr>
<tr>
<td>password</td>
<td><input type="text" name="tstudinfo.password" id="tstudinfo.password"></td>
</tr>
<tr>
<td>sex</td>
<td><input type="text" name="tstudinfo.sex" id="tstudinfo.sex"></td>
</tr>
<tr>
<td>nation</td>
<td><input type="text" name="tstudinfo.nation" id="tstudinfo.nation"></td>
</tr>
<tr>
<td>politics</td>
<td><input type="text" name="tstudinfo.politics" id="tstudinfo.politics"></td>
</tr>
<tr>
<td>standya</td>
<td><input type="text" name="tstudinfo.standya" id="tstudinfo.standya"></td>
</tr>
<tr>
<td>standby</td>
<td><input type="text" name="tstudinfo.standby" id="tstudinfo.standby"></td>
</tr>
<tr>
<td>technicainame</td>
<td><input type="text" name="tstudinfo.technicainame" id="tstudinfo.technicainame"></td>
</tr>
<tr>
<td>majorname</td>
<td><input type="text" name="tstudinfo.majorname" id="tstudinfo.majorname"></td>
</tr>
<tr>
<td>birthday</td>
<td><input type="text" name="tstudinfo.birthday" id="tstudinfo.birthday"></td>
</tr>
<tr>
<td>studylevels</td>
<td><input type="text" name="tstudinfo.studylevels" id="tstudinfo.studylevels"></td>
</tr>
<tr>
<td>phone</td>
<td><input type="text" name="tstudinfo.phone" id="tstudinfo.phone"></td>
</tr>
<tr>
<td>nativeplace</td>
<td><input type="text" name="tstudinfo.nativeplace" id="tstudinfo.nativeplace"></td>
</tr>
<tr>
<td>identitycard</td>
<td><input type="text" name="tstudinfo.identitycard" id="tstudinfo.identitycard"></td>
</tr>
<tr>
<td>mailingaddress</td>
<td><input type="text" name="tstudinfo.mailingaddress" id="tstudinfo.mailingaddress"></td>
</tr>
<tr>
<td>isrecover</td>
<td><input type="text" name="tstudinfo.isrecover" id="tstudinfo.isrecover"></td>
</tr>
<tr>
<td>bigclass</td>
<td><input type="text" name="tstudinfo.bigclass" id="tstudinfo.bigclass"></td>
</tr>
<tr>
<td colspan="2"><label>
<input type="submit" name="button" id="button" value="ok">
</label></td>
</tr>
</table>
</form>
</body>
</html>
最后就是配置文件了。由于篇目过长了,就不详细写了,配置文件将放在下面的压缩包中,大家下载后可以改成程序的东西。
因为驱动包太大了,所以上传不了,大家自己下载吧,或者发私信过来,索要!