晨魅--简单的部门维护操作练习

开发工具:JDK1.7,Eclipse5.7,Tomcat1.7

框架:spring和struts2框架,还有封装的JDBC

数据库结构:

         部门编号:“BM”+流水号(4位)  如BM0001 主键

         部门名称:varchar(50)

         部门联系方式:varchar(50)

         流水号:int(不可以自增长,程序维护)

         部门登录口令:varchar(100)MD5 加密

界面:

         部门新增

         部门编号:只读不可编辑

         部门名称:

         部门联系方式

         流水号:只读不可编辑

         部门登录口令

部门列表:

        查询:部门名称、部门联系方式(模糊查询)

       功能:新增、修改、删除

       列表显示:流水号、部门名称、部门联系方式、部门编号

我的项目的目录结构:

报错的部分是极简版的js文件,没有格式,Eclipse无法识别,不影响程序运行。

主要操作com.hymange.web.member包下的类,上面都是封装好的方法不需要动。包下面是日志,JDBC和Struts的一些配置文件,主要操作Struts-web.xml配置文件,其它也不需要动。在WebContent目录下是封装好的页面框架和一些页面样式,也不用动。在WEB-INF目录下,classes是编译文件,jsp目录是放页面的,lib目录下放jar包,web.xml是配置文件,index.jsp是在浏览器中访问程序时进的第一个页面,这里没有写登录,直接把这个页面跳过了。

接下来写配置文件

web.xml配置文件:


webAppRootKey/HY_MangecontextConfigLocationclasspath*:application*.xmllog4jConfigLocationclasspath:log4j.propertieslog4jRefreshInterval6000030piccom.hymange.common.utils.IdenImageServletpic/picdownloadcom.hymange.common.utils.ServletDownloaddownload/downloadorg.springframework.web.context.ContextLoaderListenerorg.springframework.web.util.Log4jConfigListenerstruts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*characterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtruecharacterEncodingFilter/*index.jsp
因为没写登录,在index.jsp里只是一个跳转

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>


applicationContext.xml配置文件:


classpath:bonecp.properties	
bonecp.properties配置文件

#数据库连接配置信息
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
#url=jdbc:mysql://192.168.1.88:3306/hymange_test0630?useUnicode=true&characterEncoding=utf-8
#url=jdbc:mysql://127.0.0.1/hymange?useUnicode=true&characterEncoding=utf-8
username=root
password=
#idleConnectionTestPeriod=60
idleConnectionTestPeriodInMinutes=240
#idleMaxAge=240
idleMaxAgeInMinutes=4
maxConnectionsPerPartition=10
minConnectionsPerPartition=5
partitionCount=4
acquireIncrement=5
statementsCacheSize=100
releaseHelperThreads=3

log4j.properties配置文件

log4j.rootLogger=INFO,stdout,file
log4j.addivity.org.apache=true
#log4j.debug=true
# CONSOLE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Encoding=UTF-8
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n# create log everyday
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=../ccmanager_logs/CCManager
log4j.appender.file.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.Threshold=INFO
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}:%L : %m%nlog4j.logger.com.opensymphony.xwork2=ERROR
struts-default.xml配置文件



 save,upd hssfWorkbookfileName***/html/404.html		/html/norole.html		login.do			 
struts.properties配置文件

struts.devMode=false
struts.action.extension=do
struts.enable.DynamicMethodInvocation=truestruts.locale=zh_CN
struts.i18n.encoding=UTF-8
#20M
struts.multipart.maxSize=2147483648
#struts.multipart.saveDir=
struts.i18n.reload=true
struts.ui.theme=simplestruts.objectFactory=springstruts.serve.static.browserCache=false
struts.url.includeParams=nonestruts.custom.i18n.resources=message#struts.codebehind.pathPrefix=/traincenter/
format.numD0={0,number,\#0.0} 
format.numD2={0,number,\#0.00} 
struts.xml是Struts主配置文件



    
接下来写Java类

1.写一个bean类,映射数据库字段,里面的属性私有,属性名和属性类型要和数据库中的字段一致,并为属性设置get和set方法,代码省略。。。

2.写dao类,在dao类里定义方法写sql语句

package com.hymange.web.member.dao;import java.util.List;import org.springframework.stereotype.Repository;import com.hymange.common.bean.BMember;
import com.hymange.common.exception.DaoException;
import com.hymange.common.model.Clause;
import com.hymange.common.model.Page;
import com.hymange.web.base.dao.BaseDao;
import com.hymange.web.member.bean.DeptBean;/***@Description :部门列表Dao*@author : Zhaohf*@since : 2016年7月11日 下午3:38:10*/
@Repository("MemberDao")
public class MemberDao extends BaseDao {/*** 删除部门*/public Integer deleteDept(DeptBean bMember,Clause clause){return this.getSimpleJdbcTemplate().update("delete from dept where d_number='"+bMember.getD_number()+"'");		}/*** 新增部门 	*/public Integer insertDept(DeptBean bMember,Clause clause){return this.getSimpleJdbcTemplate().update("insert into dept (d_number,d_name,d_tel,d_num,d_password) values ("+"'"+bMember.getD_number()+"'"+","+"'"+bMember.getD_name()+"'"+","+"'"+bMember.getD_tel()+"'"+","+"'"+bMember.getD_num()+"'"+","+"'"+bMember.getD_password()+"'"+")");		}/*** 部门修改*/public Integer updateDept(DeptBean bMember,Clause clause){
//		StringBuffer sql = new StringBuffer();
//		sql.append("update dept set");
//		sql.append(" d_name='"+bMember.getD_name()+"',");
//		sql.append(" d_tel='"+bMember.getD_tel()+"',");
//		sql.append(" d_password='"+bMember.getD_password()+"' ");
//		sql.append("where d_number='"+bMember.getD_number()+"'");
//		return this.getSimpleJdbcTemplate().update(sql.toString(), clause,new DeptBean());	return this.getSimpleJdbcTemplate().update("update dept set d_name='"+bMember.getD_name() +"',d_tel='"+bMember.getD_tel()+"',d_password='"+bMember.getD_password()+"' where d_number='"+bMember.getD_number()+"'");}/*** @Description 按条件查询列表* @throws DaoException */public List getlistMember(Clause clause, Page page) throws DaoException  {StringBuffer sql = new StringBuffer();sql.append("SELECT d_number,d_name,d_tel,d_num,d_password FROM dept ");if(clause.getWhereClause()!=null){sql.append(" WHERE "+clause.getWhereClause());}if(clause.getOrderbyClause()!=null){sql.append(clause.getOrderbyClause());}return this.queryForList(sql, clause.getParams(), page, new DeptBean());	}/*** @Description 按条件查询条数* @return* @throws DaoException */public Long selectCount(Clause clause) throws DaoException {StringBuffer sql = new StringBuffer();sql.append(" SELECT COUNT(*) ");		sql.append(" FROM ");sql.append(" dept ");if(clause.getWhereClause()!=null){sql.append(" WHERE "+clause.getWhereClause());}		return  this.queryForLong(sql.toString(),clause.getParams());}/*** @Description 查询单条数据* @author Zhaohf* @param clause* @return* @throws DaoException*/public DeptBean select (Clause clause) throws DaoException{StringBuffer sql = new StringBuffer();sql.append(" SELECT d_number,d_name,d_tel,d_num,d_password ");		sql.append(" FROM ");sql.append(" dept ");if(clause.getWhereClause()!=null){sql.append(" WHERE "+clause.getWhereClause());}if(clause.getOrderbyClause()!=null){sql.append(clause.getOrderbyClause());}		return this.queryForObject(sql, clause.getParams(), new DeptBean());}/*** @Description 按条件查询条数* @return* @throws DaoException */public Long getlistContract(Clause clause) throws DaoException {StringBuffer sql = new StringBuffer();sql.append(" SELECT COUNT(*) ");		sql.append(" FROM ");sql.append(" dept ");if(clause.getWhereClause()!=null){sql.append(" WHERE "+clause.getWhereClause());}		return  this.queryForLong(sql.toString(),clause.getParams());}
}
3.写service类,做逻辑判断,调dao里的方法
package com.hymange.web.member.service;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;import com.hymange.common.bean.BContract;
import com.hymange.common.bean.BMember;
import com.hymange.common.exception.DaoException;
import com.hymange.common.model.Clause;
import com.hymange.common.model.Constant;
import com.hymange.common.model.Page;
import com.hymange.web.base.service.BaseService;
import com.hymange.web.member.bean.DeptBean;
import com.hymange.web.member.dao.MemberDao;/***@Description : 部门列表Service*@author : Zhaohf*@since : 2016年7月11日 下午3:36:58*/
@Service("MemberService")
public class MemberService extends BaseService {	@Autowired@Qualifier("MemberDao")private MemberDao memberDao;private Clause clause = new Clause();public List getlistMember(DeptBean bMember,Page page) throws DaoException{//设置查询语句setClause(bMember);	return memberDao.getlistMember(clause,page);		}public long selectCount(DeptBean bMember) throws DaoException{//设置查询语句setClause(bMember);	return memberDao.selectCount(clause);		}/*** @Description 设置查询语句*/private void setClause(DeptBean bMember){clause = new Clause();if(null != bMember.getD_name() && !bMember.getD_name().isEmpty()){clause.andWhereClause(" d_name LIKE ? ");clause.addParams(this.reParam(bMember.getD_name()));}if(null != bMember.getD_tel() && !bMember.getD_tel().isEmpty()){clause.andWhereClause(" d_tel LIKE ?" );clause.addParams(this.reParam(bMember.getD_tel()));}	}/*** 删除部门*/public Boolean delete_member(DeptBean bMember) throws DaoException{boolean flag = false;if(this.memberDao.deleteDept(bMember, clause)>0){flag = true;}		return flag;}/*** 新增部门 */public Boolean insert_member(DeptBean bMember) throws DaoException{boolean flag = false;// 部门编号和流水号(执行新增操作的方法)String a = "BM";		String code = this.setLsh("dept", "1", 3);int d_num=Integer.parseInt(code);bMember.setD_number(a+code);bMember.setD_num(d_num);if(this.memberDao.insertDept(bMember, clause)>0){flag = true;}		return flag;}//在新增部门跳转时,掉这个方法,计算出部门编号和流水号public void save_obj(DeptBean bMember) throws DaoException{// 部门编号和流水号String a = "BM";		String code = this.setLsh("dept", "1", 3);// dept是表名,1是第一位是1,3是从1后面开始数的三位数int d_num=Integer.parseInt(code);//把流水号转成int型bMember.setD_number(a+code);bMember.setD_num(d_num);		}/*** 部门修改*/public Boolean update_member(DeptBean bMember) throws DaoException{boolean flag = false;if(this.memberDao.updateDept(bMember, clause)>0){flag = true;}		return flag;		}/*** @Description 查询单条数据* @author * @param page* @return* @throws DaoException*/public DeptBean select(DeptBean bMember) throws DaoException{clause = new Clause();clause.andWhereClause(" D_number = ? ");clause.addParams(bMember.getD_number());DeptBean bM= this.memberDao.select(clause);return bM;}	

4.写action类,控制页面跳转和具体操作

package com.hymange.web.member.action;import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.List;import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;import com.hymange.common.bean.BContract;
import com.hymange.common.bean.BMember;
import com.hymange.common.exception.DaoException;
import com.hymange.common.model.Constant;
import com.hymange.common.utils.MD5Encrypt;
import com.hymange.web.base.action.BaseAction;
import com.hymange.web.member.bean.DeptBean;
import com.hymange.web.member.service.MemberService;import sun.misc.BASE64Decoder;/***@Description : 部门列表Action*@author : Zhaohf*@since : 2016年7月11日 下午2:28:01*/
@SuppressWarnings("serial")
@Controller("MemberAction")
public class MemberAction extends BaseAction {private DeptBean bmember;private List bmemberList;@Autowired@Qualifier("MemberService")private MemberService memberService;/*** @Description 部门列表跳转* @author Zhaohf* @return*/public String member_list(){bmember = new DeptBean();try {bmemberList = memberService.getlistMember(bmember,this.getPage());long count = memberService.selectCount(bmember);this.toJsonData(bmemberList, count);} catch (DaoException e) {e.printStackTrace();}		return"member_list";}/*** @Description 部门列表查询* @author * @return*/public String select_member_list(){if(null == bmember)bmember = new DeptBean();String d_name = ServletActionContext.getRequest().getParameter("d_name");String d_tel = ServletActionContext.getRequest().getParameter("d_tel");		bmember.setD_number(d_name);bmember.setD_number(d_tel);try {bmemberList = memberService.getlistMember(bmember,this.getPage());long count = memberService.selectCount(bmember);this.toJsonData(bmemberList, count);} catch (DaoException e) {e.printStackTrace();}		return "jsonResult";}/*** @Description 新增部门页跳转* @author * @return*/public String member_add(){bmember = new DeptBean();try {//掉计算流水号的方法,然后把得到的值传到页面显示出来this.memberService.save_obj(bmember);ServletActionContext.getRequest().setAttribute("bmember", bmember);		} catch (DaoException e) {e.printStackTrace();}this.setHandle("ADD");return"member_add";}/*** 新增部门*/public String save_member(){//MD5加密bmember.setD_password(MD5Encrypt.MD5Encode(bmember.getD_password().substring(bmember.getD_password().length())));try {			if(memberService.insert_member(bmember)==true){this.toJsonMsg("success", "保存成功");} else {this.toJsonMsg("error", "系统繁忙。。。");}			} catch (DaoException e) {e.printStackTrace();this.toJsonMsg("error", "系统繁忙。。。");}return Constant.JSON_RESULT;}/*** @Description 部门修改页跳转* @author * @return*/public String member_edit(){try {bmember = this.memberService.select(bmember);ServletActionContext.getRequest().setAttribute("bmember", bmember);			} catch (DaoException e) {e.printStackTrace();}		this.setHandle("EDIT");return"member_edit";}/*** 部门修改*/public String edit_member(){//MD5加密bmember.setD_password(MD5Encrypt.MD5Encode(bmember.getD_password().substring(bmember.getD_password().length())));try {			if(memberService.update_member(bmember)==true){this.toJsonMsg("success", "保存成功");} else {this.toJsonMsg("error", "系统繁忙。。。");}			} catch (DaoException e) {e.printStackTrace();this.toJsonMsg("error", "系统繁忙。。。");}	return Constant.JSON_RESULT;}/*** 删除部门*/public String delete_member(){		try {			if(memberService.delete_member(bmember)==true){this.toJsonMsg("success", "删除成功");} else {this.toJsonMsg("error", "系统繁忙。。。");}			} catch (DaoException e) {e.printStackTrace();this.toJsonMsg("error", "系统繁忙。。。");}	return Constant.JSON_RESULT;}//get和set方法	public List getBmemberList() {return bmemberList;}public void setBmemberList(List bmemberList) {this.bmemberList = bmemberList;}public DeptBean getBmember() {return bmember;}public void setBmember(DeptBean bmember) {this.bmember = bmember;}
5.写Struts-web.xml配置文件,他负责链接action类和页面的



		/WEB-INF/jsp/member/member_list.jsp	/WEB-INF/jsp/member/member_add.jsp	/WEB-INF/jsp/member/member_detail.jsp	/WEB-INF/jsp/member/member_testPassword.jsp/WEB-INF/jsp/member/member_edit.jsp					
namespace="/" 空间名,/是没有,如果写了,在浏览器中访问时把链接打上

action里的 name="member" class="MemberAction" name是起的名,class是交给它管理的类

result里的 name="member_list" name是交给它管理的类里的方法名,标签体里是他要跳转的jsp页面

6.写jsp页面

部门列表页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>



部门列表
<%@include file="../common/base.jsp"%>

  



当前位置:部门列表操作提示:查看部门列表						
部门名称    
部门联系方式    
查询
新增部门 修改部门删除
部门编号部门名称 流水号 部门联系方式
部门新增页面


<%@page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>


部门新增
<%@include file="/WEB-INF/jsp/common/base.jsp"%>






当前位置:部门列表/部门新增会员编辑
保存返回列表
    *部门编号:

    *部门名称:

    *联系方式:

    *流水号:

    *登陆口令:


保存返回列表
修改部门页面


<%@page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>


修改部门
<%@include file="/WEB-INF/jsp/common/base.jsp"%>






当前位置:部门列表/修改部门修改部门
保存返回列表
    *部门编号:<%-- --%>

    *部门名称:

    *联系方式:

    *流水号:

    *登陆口令:


保存返回列表


效果展示:

部门列表页面



部门新增页面


修改部门页面


删除效果


查询效果




本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部