日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实战3--设计管理模块,整合!!!

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战3--设计管理模块,整合!!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 所有dao和daoimpl模塊都不用, 加上?@Deprecated

2. 建立DaoSupport類和DaoSupportImpl類

? ??DaoSupport.java? ? ?

package cn.itcast.oa.base; import java.util.List; public interface DaoSupport<T> {void save(T entity);void delete(Long id);void update(T entity);T getById(Long id);List<T> getByIds(Long[] ids);List<T> findAll(); }

?  DaoSupportImpl.java? ? ?

package cn.itcast.oa.base; import java.lang.reflect.ParameterizedType; import java.util.List; import javax.annotation.Resource; import org.hibernate.Session; import org.hibernate.SessionFactory;
@SuppressWarnings("unchecked") public class DaoSupportImpl<T> implements DaoSupport<T> {@Resourceprivate SessionFactory sessionFactory;private Class<T> clazz = null;public DaoSupportImpl(){//使用反射技術得到T的真實類型ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();//獲取當前new的對象的泛型的父類類型this.clazz = (Class<T>)pt.getActualTypeArguments()[0];System.out.println("clazz===>"+clazz.getName());System.out.println("clazz===>"+clazz.getSimpleName());}protected Session getSession() {return sessionFactory.getCurrentSession();}public void save(T entity) {getSession().save(entity);}public void update(T entity) {getSession().update(entity);}public void delete(Long id) {Object obj = getById(id);if (obj != null) {getSession().delete(obj);}}public T getById(Long id) {if(id == null)return null;elsereturn (T) getSession().get(clazz, id);}public List<T> getByIds(Long[] ids) {return getSession().createQuery(//"FROM " + clazz.getSimpleName()+"WHERE id IN(:ids)")//.setParameterList("ids",ids).list();}public List<T> findAll() {return getSession().createQuery(//"FROM " + clazz.getSimpleName()).//list();}}

 3. 抽取BaseAction, 這樣每個action都可以專注寫自己的方法? ?

package cn.itcast.oa.base; import java.lang.reflect.ParameterizedType; import javax.annotation.Resource; import cn.itcast.oa.service.DepartmentService; import cn.itcast.oa.service.RoleService; import cn.itcast.oa.service.UserService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>{ protected T model ; public BaseAction(){ try {//通過反射活的model的真實類型ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();Class<T> clazz = (Class<T>)pt.getActualTypeArguments()[0];//通過反射創建model的實例model = clazz.newInstance();} catch (Exception e) {throw new RuntimeException();} }public T getModel() { return model;}//******************service實例的聲明******************@Resourceprotected RoleService roleService;@Resourceprotected DepartmentService departmentService;@Resourceprotected UserService userService; }

整合完畢!!!

?

增加新模塊的步驟: 

一. 創建Action的準備

1. 寫新的action, UserAction.java,

? ? 1) extends BaseAction

? ? 2) @Controller ?@Scope("prototype")

2. 定義出Action的方法, 寫出方法名, 作用, 返回值? ??

/** 列表 */public String list() throws Exception {return "list";}/** 刪除 */public String delete() throws Exception {return "toList";}/** 添加頁面 */public String addUI() throws Exception {return "saveUI";}/** 添加 */public String add() throws Exception {return "toList";}/** 修改頁面 */public String editUI() throws Exception {return "saveUI";}/** 修改 */public String edit() throws Exception {return "toList";}/** 初始化密碼1234 **/public String initPassword() throws Exception {return "toList";}

3. 創建所用到的jsp頁面(list.jsp, saveUI.jsp)

4.?struts.xml配置? ??

<!-- 用戶管理 --> <action name="user_*" class="userAction" method="{1}"><result name="list">/WEB-INF/jsp/userAction/list.jsp</result><result name="saveUI">/WEB-INF/jsp/userAction/saveUI.jsp</result><result name="toList" type="redirectAction">user_list?parentId=${parentId}</result> </action>

  

二. 準備service

1. 創建接口UserService.java, ???extends DaoSupport<User>? ?

package cn.itcast.oa.service; import cn.itcast.oa.base.DaoSupport; import cn.itcast.oa.domain.User; public interface UserService extends DaoSupport<User>{ }

2. 創建實現類?UserServiceImpl.java ?, ?extends DaoSupportImpl<User> implements UserService

3. 配置: 在UserServiceImpl上寫注解?@Service ?@Transactional

package cn.itcast.oa.service.impl;import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;import cn.itcast.oa.base.DaoSupportImpl; import cn.itcast.oa.domain.User; import cn.itcast.oa.service.UserService;@Service @Transactional public class UserServiceImpl extends DaoSupportImpl<User> implements UserService{}

4. BaseAction里寫service的聲明? ?

package cn.itcast.oa.base; import java.lang.reflect.ParameterizedType; import javax.annotation.Resource; import cn.itcast.oa.service.DepartmentService; import cn.itcast.oa.service.RoleService; import cn.itcast.oa.service.UserService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>{ protected T model ; public BaseAction(){ try {//通過反射活的model的真實類型ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();Class<T> clazz = (Class<T>)pt.getActualTypeArguments()[0];//通過反射創建model的實例model = clazz.newInstance();} catch (Exception e) {throw new RuntimeException();} }public T getModel() { return model;}//******************service實例的聲明******************@Resourceprotected RoleService roleService;@Resourceprotected DepartmentService departmentService;@Resourceprotected UserService userService; }

  

三. 填空

1. 寫Action方法

? ?UserAction.java

? ?

package cn.itcast.oa.view.action;import java.util.HashSet; import java.util.List;import org.apache.commons.codec.digest.DigestUtils; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller;import cn.itcast.oa.base.BaseAction; import cn.itcast.oa.domain.Department; import cn.itcast.oa.domain.Role; import cn.itcast.oa.domain.User; import cn.itcast.oa.util.DepartmentUtils;import com.opensymphony.xwork2.ActionContext;@Controller @Scope("prototype") public class UserAction extends BaseAction<User> {private Long departmentId;private Long[] roleIds;/** 列表 */public String list() throws Exception {List<User> userList = userService.findAll();ActionContext.getContext().put("userList", userList);return "list";}/** 刪除 */public String delete() throws Exception {userService.delete(model.getId());return "toList";}/** 添加頁面 */public String addUI() throws Exception {// 準備數據departmentListList<Department> topList = departmentService.findTopList();List<Department> departmentList = DepartmentUtils.getAllDepartments(topList);ActionContext.getContext().put("departmentList", departmentList);// 準備崗位List<Role> roleList = roleService.findAll();ActionContext.getContext().put("roleList", roleList);return "saveUI";}/** 添加 */public String add() throws Exception {// 封裝到對象中 (model是實體類型時, 可以使用model, 但要設置未封裝的屬性)model.setDepartment(departmentService.getById(departmentId));List<Role> roleList = roleService.getByIds(roleIds);model.setRoles(new HashSet<Role>(roleList));// 設置密碼為1234, 要使用MD5摘要()String md5Digest = DigestUtils.md5Hex("1234");model.setPassword(md5Digest);// 保存到數據庫userService.save(model);return "toList";}/** 修改頁面 */public String editUI() throws Exception {// 準備數據departmentListList<Department> topList = departmentService.findTopList();List<Department> departmentList = DepartmentUtils.getAllDepartments(topList);ActionContext.getContext().put("departmentList", departmentList);// 準備崗位List<Role> roleList = roleService.findAll();ActionContext.getContext().put("roleList", roleList);// 準備回顯的數據User user = userService.getById(model.getId());ActionContext.getContext().getValueStack().push(user);if (user.getDepartment() != null) {departmentId = user.getDepartment().getId();}if (user.getRoles() != null) {roleIds = new Long[user.getRoles().size()];int index = 0;for (Role role : user.getRoles()) {roleIds[index++] = role.getId();}}return "saveUI";}/** 修改 */public String edit() throws Exception {// 從數據庫中取出原對象User user = userService.getById(model.getId());// 設置要修改的屬性user.setLoginName(model.getLoginName());user.setName(model.getName());user.setGender(model.getGender());user.setPhoneNumber(model.getPhoneNumber());user.setEmail(model.getEmail());user.setDescription(model.getDescription());user.setDepartment(departmentService.getById(departmentId));List<Role> roleList = roleService.getByIds(roleIds);user.setRoles(new HashSet<Role>(roleList));// 更新到數據庫userService.update(user);return "toList";}/** 初始化密碼1234 **/public String initPassword() throws Exception {// 從數據庫中取出原對象User user = userService.getById(model.getId());// 設置要修改的屬性String md5Digest = DigestUtils.md5Hex("1234");user.setPassword(md5Digest);// 更新到數據庫,使用MD5摘要userService.update(user);return "toList";}public Long getDepartmentId() {return departmentId;}public void setDepartmentId(Long departmentId) {this.departmentId = departmentId;}public Long[] getRoleIds() {return roleIds;}public void setRoleIds(Long[] roleIds) {this.roleIds = roleIds;} }

  

2. 新增service方法

3. jsp頁面內容

? ? list.jsp

? ??

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%String path = request.getContextPath();%> <html> <head><title>用戶列表</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script language="javascript" type="text/javascript" src=<%=path%>/script/jquery.js"></script><script language="javascript" type="text/javascript" src=<%=path%>/script/pageCommon.js"></script><script language="javascript" type="text/javascript" src=<%=path%>/script/PageUtils.js"></script><link type="text/css" rel="stylesheet" href="<%=path%>/style/blue/pageCommon.css"/><script type="text/javascript"></script> </head> <body><div id="Title_bar"><div id="Title_bar_Head"> <div id="Title_Head"></div><div id="Title"><!--頁面標題--><img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 用戶管理</div><div id="Title_End"></div></div> </div><div id="MainArea"><table cellspacing="0" cellpadding="0" class="TableStyle"><!-- 表頭--><thead><tr align=center valign=middle id=TableTitle><td width="100">登錄名</td><td width="100">姓名</td><td width="100">所屬部門</td><td width="200">崗位</td><td>備注</td><td>相關操作</td></tr></thead><!--顯示數據列表--><tbody id="TableData" class="dataContainer" datakey="userList"><s:iterator value="#userList"><tr class="TableDetail1 template"><td>${loginName}?</td><td>${name}?</td><td>${department.name}?</td><td><s:iterator value="roles">${name}</s:iterator></td><td>${description}?</td><td><s:a action="user_delete?id=%{id}" οnclick="return delConfirm()">刪除</s:a><s:a action="user_editUI?id=%{id}">修改</s:a><s:a action="user_initPassword?id=%{id}" οnclick="return window.confirm('您確定要初始化密碼為1234嗎?')">初始化密碼</s:a></td></tr></s:iterator> </tbody></table><!-- 其他功能超鏈接 --><div id="TableTail"><div id="TableTail_inside"><s:a action="user_addUI"><img src="${pageContext.request.contextPath}/style/images/createNew.png" /></s:a></div></div> </div></body> </html>

  saveUI.jsp

?

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%String path = request.getContextPath();%> <html> <head><title>用戶信息</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script language="javascript" type="text/javascript" src=<%=path%>/script/jquery.js"></script><script language="javascript" type="text/javascript" src=<%=path%>/script/pageCommon.js"></script><script language="javascript" type="text/javascript" src=<%=path%>/script/PageUtils.js"></script><link type="text/css" rel="stylesheet" href="<%=path%>/style/blue/pageCommon.css"/><script type="text/javascript"></script> </head> <body><!-- 標題顯示 --> <div id="Title_bar"><div id="Title_bar_Head"><div id="Title_Head"></div><div id="Title"><!--頁面標題--><img border="0" width="13" height="13" src="<%=path%>/style/images/title_arrow.gif"/> 用戶信息</div><div id="Title_End"></div></div> </div><!--顯示表單內容--> <div id=MainArea><s:form action="user_%{id == null ? 'add' : 'edit'}"><s:hidden name="id"></s:hidden><div class="ItemBlock_Title1"><!-- 信息說明 --><div class="ItemBlock_Title1"><img border="0" width="4" height="7" src="<%=path%>/style/blue/images/item_point.gif" /> 用戶信息 </div> </div><!-- 表單內容顯示 --><div class="ItemBlockBorder"><div class="ItemBlock"><table cellpadding="0" cellspacing="0" class="mainForm"><tr><td width="100">所屬部門</td><td><s:select name="departmentId" cssClass="SelectStyle"list="#departmentList" listKey="id" listValue="name"headerKey="" headerValue="==請選擇部門=="/></td></tr><tr><td>登錄名</td><td><s:textfield name="loginName" cssClass="InputStyle"/> *(登錄名要唯一)</td></tr><tr><td>姓名</td><td><s:textfield name="name" cssClass="InputStyle"/> *</td></tr><tr><td>性別</td><td><%--<s:radio name="gender" list="%{ #{'男':'男', '女':'女'} }"></s:radio><s:radio name="gender" list="#{'男':'男', '女':'女'}"></s:radio>--%><s:radio name="gender" list="{'男', '女'}"></s:radio></td></tr><tr><td>聯系電話</td><td><s:textfield name="phoneNumber" cssClass="InputStyle"/></td></tr><tr><td>E-mail</td><td><s:textfield name="email" cssClass="InputStyle"/></td></tr><tr><td>備注</td><td><s:textarea name="description" cssClass="TextareaStyle"></s:textarea></td></tr></table></div></div><div class="ItemBlock_Title1"><!-- 信息說明 --><div class="ItemBlock_Title1"><img border="0" width="4" height="7" src="<%=path%>/style/blue/images/item_point.gif" /> 崗位設置 </div> </div><!-- 表單內容顯示 --><div class="ItemBlockBorder"><div class="ItemBlock"><table cellpadding="0" cellspacing="0" class="mainForm"><tr><td width="100">崗位</td><td><s:select name="roleIds" cssClass="SelectStyle"multiple="true" size="10" list="#roleList" listKey="id" listValue="name"/>按住Ctrl鍵可以多選或取消選擇</td></tr></table></div></div> <!-- 表單操作 --><div id="InputDetailBar"><input type="image" src="<%=path%>/style/images/save.png"/><a href="javascript:history.go(-1);"><img src="<%=path%>/style/images/goBack.png"/></a></div></s:form> </div><div class="Description">說明:<br />1,用戶的登錄名要唯一,在填寫時要同時檢測是否可用。<br />2,新建用戶后,密碼被初始化為"1234"。<br />3,密碼在數據庫中存儲的是MD5摘要(不是存儲明文密碼)。<br />4,用戶登錄系統后可以使用“個人設置→修改密碼”功能修改密碼。<br />5,新建用戶后,會自動指定默認的頭像。用戶可以使用“個人設置→個人信息”功能修改自已的頭像<br />6,修改用戶信息時,登錄名不可修改。 </div></body> </html>

  

  

  

轉載于:https://www.cnblogs.com/wujixing/p/5511045.html

總結

以上是生活随笔為你收集整理的实战3--设计管理模块,整合!!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜看片 | 欧美综合国产 | av性在线| 特大黑人娇小亚洲女mp4 | 久久久久久久极品 | 国产91精品看黄网站在线观看 | 中文字幕精品一区二区精 | 国产精品网友自拍 | 在线亚洲精品 | 女人看黄色网 | 亚洲大色网 | 欧美一区中文字幕 | 国产chinese男男gaygay视频 | 能在线观看的av网站 | 香蕉午夜视频 | 精品视频区 | 欧美爱爱一区二区 | 国产成人精品一区二区三区在线 | xxxxhd欧美 | 国产日韩免费视频 | 亚洲中文字幕一区二区在线观看 | 99ri在线观看 | 色诱av手机版 | 裸体美女免费视频网站 | 久久久久久久一区二区 | juliaann第一次和老师 | 色婷婷六月 | 在线久 | 亚日韩av| 亚洲天堂中文字幕在线观看 | 中文字幕在线观看日韩 | 欧美老熟妇xb水多毛多 | 久久精品色欲国产AV一区二区 | 久久毛片网| 香蕉视频在线观看免费 | 情侣作爱视频网站 | 99riav国产精品视频 | 国产亚洲区 | 91精品国产成人观看 | 免费观看黄色网页 | 精品亚洲国产成人av制服丝袜 | 精品少妇一区二区 | h片观看 | 涩涩视频网站在线观看 | 国产午夜麻豆影院在线观看 | 黄色在线一区 | 蜜桃av一区二区三区 | 黄色片大全 | 国产盗摄精品一区二区酒店 | 黄色大片免费在线观看 | 影音先锋啪啪资源 | 在线麻豆av| 视频免费在线观看 | 成人黄色网 | 成年人视频在线免费看 | 一个人在线观看www www.97色 | 国产精品第7页 | 日日夜夜狠狠 | 亚洲va视频 | 久久精品女人毛片国产 | 丁香六月激情综合 | 日韩欧美四区 | 91丨国产丨捆绑调教 | 欧美在线一区二区三区四区 | 最新中文字幕久久 | 欧美激情二区三区 | 黄色日批网站 | 久久人人爱 | 农村偷人一级超爽毛片 | 国精产品一区一区三区视频 | 久久va| 日韩小视频在线 | 黄色小说图片视频 | 91中文字幕在线观看 | 久久久久久久久久99精品 | 国产又粗又黄又爽又硬的视频 | 日韩精品第一页 | 久久伊人影院 | 91国偷自产一区二区三区女王 | 一级黄色片在线免费观看 | 人妻少妇精品无码专区 | 久草这里只有精品 | 亚洲理论片 | 日韩精品h | 经典杯子蛋糕日剧在线观看免费 | 老司机一区 | 13日本xxxxxⅹxxx20 | 日韩精品久久一区 | 欧美天天搞 | 天天色综合av | av免费毛片 | 麻豆精品在线 | 成人综合影院 | 一级国产特黄bbbbb | 好吊操妞| 91视频看 | 五月激情在线 | 日本国产亚洲 | 少妇不卡视频 |