日韩性视频-久久久蜜桃-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--设计管理模块,整合!!!的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜视频在线免费看 | 国产精品一区二区在线免费观看 | 日韩在线不卡视频 | 色呦呦中文字幕 | 一区二区久久 | 九色福利视频 | 99久久久无码国产精品免费蜜柚 | 久久成人毛片 | 成人免费观看视频 | 国产地址一 | 亚洲一区二区在线免费 | 日韩精品久久一区 | 动漫美女露胸网站 | 久久精品伊人 | 精品久久久久久久久久岛国gif | 在线成人中文字幕 | 97久久久久久久 | 快播91| 久久夜色网 | 天堂在线中文8 | 青青草成人网 | 国产又爽又黄免费视频 | 亚洲在线一区二区三区 | 欧美最猛黑人xxxx | 色播五月激情 | 午夜福利一区二区三区 | 日本一区二区黄色 | 成人免费看视频 | 国产二页 | 日本三级片在线观看 | 日本美女日批视频 | 黑人玩弄人妻一区二 | 久久久久久久免费 | 不卡一区在线 | 欧美日韩亚洲一区二区三区 | 国产一级免费看 | 欧美日韩一区二区三区四区五区 | 九九九视频在线观看 | 三上悠亚在线一区 | 国产一区二区99 | 亚洲激情第一页 | 精品国产999久久久免费 | 超碰在线99 | 亚洲在线精品视频 | 成人综合婷婷国产精品久久 | 成年人黄国产 | 日韩欧美亚洲天堂 | 久久久久久久伊人 | 色av吧| 日韩在线第二页 | 亚州欧美 | 污视频在线免费观看 | 在厨房拨开内裤进入毛片 | 91欧美激情一区二区三区 | 亚洲男人天堂视频 | 神马国产| 欧美精品卡一卡二 | 日韩精品中文字幕一区二区 | 欧美成人精品在线视频 | 波多av在线 | 国产精品一品二品 | 亚洲福利视频一区二区三区 | 人妻与黑人一区二区三区 | 特大黑人巨人吊xxxx | av女人的天堂 | 精彩毛片| 黄色国产视频网站 | 亚洲欧美伊人 | 影音先锋在线看 | 成人自拍视频网 | 蜜桃tv一区二区三区 | 成人av毛片 | 日本亚洲色大成网站www久久 | 高跟鞋肉丝交足91 | 日本成人激情 | 国产原创视频 | 四虎最新站名点击进入 | 99在线精品视频免费观看软件 | 岛国av免费观看 | www.777色 | 国产日皮视频 | 亚洲天堂国产 | 国产一区精品在线观看 | 日韩国产三级 | 天天摸天天操天天射 | 毛片链接 | 在线观看亚洲免费视频 | 麻豆黄色片 | 麻豆自拍视频 | 国产美女精品人人做人人爽 | 亚洲日本黄色 | 999国产精品视频免费 | 国产视频在线观看免费 | 91精品国产乱码久久久张津瑜 | 在线免费观看a视频 | 欧美在线视频免费观看 | 久久综合亚洲色hezyo国产 | 91激情视频在线 | 91久久综合精品国产丝袜蜜芽 |