《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
(2)删除IDepBiz当中的方法,继承上面创建好的接口
package com.itzheng.erp.biz;
import com.itzheng.erp.entity.Dep;
/*
- 部门业务接口
*/
public interface IDepBiz extends IBaseBiz {
}
(3)创建BaseBiz实现类,将DepBiz(替换DepDao为BaseDao,depDao替换成baseDao,将Dep改写为T,将dep改写为t)
package com.itzheng.erp.biz.impl;
import java.util.List;
import com.itzheng.erp.biz.IBaseBiz;
import com.itzheng.erp.dao.IBaseDao;
import com.itzheng.erp.entity.Dep;
public class BaseBiz implements IBaseBiz {
/*
- 数据访问层的调用
*/
private IBaseDao baseDao;
public void setBaseDao(IBaseDao baseDao) {
this.baseDao = baseDao;
}
@Override
public List getList() {
// TODO Auto-generated method stub
return baseDao.getList();
}
@Override
public List getList(T t1, T t2, Object param, int firstResult, int maxResults) {
return baseDao.getList(t1, t2, param, firstResult, maxResults);
}
@Override
public long getCount(T t1, T t2, Object param) {
return baseDao.getCount(t1, t2, param);
}
@Override
public void add(T t) {
System.out.println(t);
baseDao.add(t);
}
@Override
public void delete(Long uuid) {
// TODO Auto-generated method stub
baseDao.delete(uuid);
}
@Override
public T get(Long uuid) {
return baseDao.get(uuid);
}
@Override
public void update(T t) {
baseDao.update(t);
}
}
(4)在DepBiz当中继承BaseBiz实现IDepBiz
package com.itzheng.erp.biz.impl;
import java.util.List;
import com.itzheng.erp.biz.IDepBiz;
import com.itzheng.erp.dao.IDepDao;
import com.itzheng.erp.entity.Dep;
/*
- 部门业务实现
*/
public class DepBiz extends BaseBiz implements IDepBiz {
/*
- 数据访问层的调用
*/
private IDepDao depDao;
public void setDepDao(IDepDao depDao) {
this.depDao = depDao;
super.setBaseDao(this.depDao);
}
}
4、抽取通用Action
(1)在erp_web当中创建,创建BaseAction
(2)将DepAction当中的所有方法都复制过来,替换DepBiz为BaseBiz,depBiz为baseBiz,替换Dep为T替换dep 为t
package com.itzheng.erp.action;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSON;
import com.itzheng.erp.biz.IBaseBiz;
public class BaseAction {
private IBaseBiz baseBiz;
public void setBaseBiz(IBaseBiz baseBiz) {
this.baseBiz = baseBiz;
}
// 属性驱动:条件查询
private T t1;
private T t2;
private Object param;
public Object getParam() {
return param;
}
public void setParam(Object param) {
this.param = param;
}
public T getT2() {
return t2;
}
public void setT2(T t2) {
this.t2 = t2;
}
public T getT1() {
return t1;
}
public void setT1(T t1) {
this.t1 = t1;
}
private int page;// 页码
private int rows;// 每页的记录数
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
// 条件查询
public void getList() {
System.out.println(“页码:” + page + “记录数:” + rows);
int firstResult = (page - 1) * rows;
List list = baseBiz.getList(t1, t2, param, firstResult, rows);
long total = baseBiz.getCount(t1, t2, param);// 查询数据的条数
// 把部门列表转换为JSON字符串
// {{total: total, rows:[]};}
Map<String, Object> mapData = new HashMap<String, Object>();
mapData.put(“total”, total);
mapData.put(“rows”, list);
String listString = JSON.toJSONString(mapData);
write(listString);
}
/*
- 查询所有部门
*/
public void list() {
/*
- 调用业务部门的业务,查询所有部门信息
*/
List list = baseBiz.getList();
// 把部门列表转换为JSON字符串
String listString = JSON.toJSONString(list);
write(listString);
}
/*
- 新增的修改
*/
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public void add() {
// {“success”:true,“message”:“”}
// 返回前端的JSON数据
System.out.println(t + “------------------------------------”);
Map<String, Object> rtn = new HashMap<String, Object>();
try {
baseBiz.add(t);
rtn.put(“success”, true);
rtn.put(“message”, “新增成功”);
} catch (Exception e) {
e.printStackTrace();
rtn.put(“success”, false);
rtn.put(“message”, “新增失败”);
}
// 向集合当中添加一部分数据,然后将map集合转换为JSON数据输出到页面上
write(JSON.toJSONString(rtn));
}
/*
- 删除
*/
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
/**
-
删除
-
@param jsonString
*/
public void delete() {
try {
baseBiz.delete(id);
ajaxReturn(true, “删除成功”);
} catch (Exception e) {
e.printStackTrace();
ajaxReturn(false, “删除失败”);
}
}
/*
- 通过编号查询对象
*/
public void get() {
T t = baseBiz.get(id);
String jsonString = JSON.toJSONString(t);
System.out.println(“转换前:” + jsonString);
// 将JSON数据转换为MAP对象
// 转换为map对象
String jsonStringAfter = mapData(jsonString, “t”);
System.out.println(“转换后:” + jsonStringAfter);
write(jsonStringAfter);
}
/*
- 修改
*/
public void update() {
try {
ajaxReturn(true, “更新成功”);
baseBiz.update(t);
} catch (Exception e) {
// TODO: handle exception
ajaxReturn(false, “更新失败”);
e.printStackTrace();
}
}
// JSON 数据字符串
// 要加上的前缀
public String mapData(String jsonString, String prefix) {
Map<String, Object> map = JSON.parseObject(jsonString);
// 存储key加上前缀后的值
Map<String, Object> dataMap = new HashMap<String, Object>();
// 给每个key值加上前缀
for (String key : map.keySet()) {
dataMap.put(prefix + “.” + key, map.get(key));
}
return JSON.toJSONString(dataMap);
}
public void ajaxReturn(boolean success, String message) {
// 返回前端的JSON数据
Map<String, Object> rtn = new HashMap<String, Object>();
rtn.put(“success”, success);
rtn.put(“message”, message);
write(JSON.toJSONString(rtn));
}
public void write(String jsonString) {
try {
// 响应对象
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType(“text/html;charset=utf-8”);
// 输出给页面
response.getWriter().write(jsonString);
System.out.println(jsonString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
(3)改造DepAction
package com.itzheng.erp.action;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSON;
import com.itzheng.erp.biz.IDepBiz;
import com.itzheng.erp.entity.Dep;
/*
- 部门Action
*/
public class DeptAction extends BaseAction {
private IDepBiz depBiz;
public void setDepBiz(IDepBiz depBiz) {
this.depBiz = depBiz;
super.setBaseBiz(this.depBiz);
}
}
5、抽取前端的(js代码封装)
在webapp下新建立一个js文件夹
在js文件夹下创建一个crud.js的文件
crud.js当中的内容,把dep.html里面的内容都复制到crud.js当中,将里面'dep
替换为name+'_
//提交的方法
var method = “”;
$(function() {
$(‘#grid’).datagrid({
url : name + ‘_getList’,
columns : columns,
singleSelect : true,
pagination : true,
toolbar : [ {
text : ‘新增’,
iconCls : ‘icon-add’,
handler : function() {
method = “add”;
$(‘#editDlg’).dialog(‘open’);
}
} ]
});
$(‘#btnSearch’).bind(‘click’, function() {
// 把表单数据转换成json对象
var formData = $(‘#searchForm’).serializeJSON();
$(‘#grid’).datagrid(‘load’, formData);
});
$(‘#editDlg’).dialog({
title : ‘部门编辑’,
width : 300,
height : 200,
closed : true,// 窗口是是否为关闭状态, true:表示关闭
modal : true
// 模式窗口
});
$(‘#btnSave’).bind(‘click’, function() {
var formData = $(‘#editForm’).serializeJSON();
$.ajax({
url : name + ‘_’ + method,
data : formData,
dataType : ‘json’,
type : ‘post’,
success : function(rtn) {
$.messager.alert(“提示”, rtn.message, ‘info’, function() {
// 成功的话,我们要关闭窗口
$(‘#editDlg’).dialog(‘close’);
// 刷新表格数据
$(‘#grid’).datagrid(‘reload’);
});
}
});
});
});
/**
- 删除部门
*/
function del(uuid) {
$.messager.confirm(“确认”, “确认要删除吗?”, function(yes) {
if (yes) {
$.ajax({
url : name + ‘_delete?id=’ + uuid,
dataType : ‘json’,
type : ‘post’,
success : function(rtn) {
$.messager.alert(“提示”, rtn.message, ‘info’, function() {
// 刷新表格数据
$(‘#grid’).datagrid(‘reload’);
});
}
});
}
});
}
/**
- 修改部门
*/
function edit(uuid) {
// 弹出窗口
$(‘#editDlg’).dialog(‘open’);
// 清空表单内容
$(‘#editForm’).form(‘clear’);
method = “update”;
// 加载数据
$(‘#editForm’).form(‘load’, name + ‘_get?id=’ + uuid);
}
dep.html里面先定义name=“dep”,colums=[];因为他们是具体某个实体类的私有内容
6、Dep.html修改
href=“ui/themes/default/easyui.css”>
style=“padding-left: 4px; border-bottom: 0px;”>
最后
最后,强调几点:
- 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
- 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
- 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。
面试答案
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
ipt:void(0)" οnclick="del(’
- row.uuid + ‘)">删除’;
return oper;
} }
] ]
style=“padding-left: 4px; border-bottom: 0px;”>
最后
最后,强调几点:
- 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
- 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
- 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;
我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。
面试答案
[外链图片转存中…(img-KyXsctCG-1714679066727)]
[外链图片转存中…(img-1dUwFRDQ-1714679066728)]
[外链图片转存中…(img-O6HmIhBE-1714679066728)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!