轻量框架制作:(原创)
1.万用控制器
package ebms;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Go extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
res.setCharacterEncoding("utf-8");
String pp = req.getParameter("pp");
String mm = req.getParameter("mm");
PrintWriter out = res.getWriter();
try {
String cc = "";
cc = req.getParameter("cc");
if (cc == null) {
cc = pp;
}
Class<?> cls = Class.forName(pp + "." + cc);
Object obj = cls.newInstance();
Method setFunc = cls.getMethod(mm, Map.class, List.class);
Enumeration<String> p = req.getParameterNames();
List<String> list = new ArrayList<>();
while (p.hasMoreElements()) {
String value = (String) p.nextElement();// 调用nextElement方法获得元素
list.add(value);
}
Map<String, String> param = new ConcurrentHashMap<String, String>();
for (int i = 0; i < list.size(); i++) {
String value = req.getParameter(list.get(i));
param.put(list.get(i), value);
}
String result = setFunc.invoke(obj, param, list).toString();
out.print(result);
} catch (Exception e) {
e.printStackTrace();
out.println("有异常,请联系管理员,异常代码为" + e);
}
}
}
2.数据处理层的数据处理组件:
package ebms;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.List;
import java.util.Map;
public class MySystem {
PreparedStatement ps;
Connection conn;
ResultSet rs;
protected String sql;
protected String result = "";
int param_num = 0;
public void DBUtil() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ebms", "root", "root");
ps = conn.prepareStatement(sql);
int n = 0;
for (int i = 0; i < sql.length(); i++) {
if (sql.charAt(i) == '?') {
n++;
}
}
param_num = n;
} catch (Exception e) {
e.printStackTrace();
}
}
public void setMap(Map m, List l) {
try {
System.out.println(m.size() + "msize");
System.out.println("lsize=" + l.size());
int p = 1;
for (int i = 0; i < l.size(); i++) {
System.out.println("lgeti" + l.get(i));
if ((!l.get(i).toString().equals("pp")) && (!l.get(i).toString().equals("cc"))
&& (!l.get(i).toString().equals("mm"))) {
String s = m.get(l.get(i)).toString();
ps.setString(p, s);
if (p < param_num) {
p++;
} else {
break;
}
System.out.println("i=" + i);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public String noselect(Map m, List l) {
try {
DBUtil();
setMap(m, l);
ps.executeUpdate();
ps.close();
conn.close();
return "操作完毕";
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public String select(Map m, List l) {
try {
DBUtil();
setMap(m, l);
rs = ps.executeQuery();
ResultSetMetaData rm = rs.getMetaData();
while (rs.next()) {
String k = "";
int n = rm.getColumnCount();
String oneData = "";
for (int i = 1; i < n; i++) {
k = rm.getColumnName(i);
oneData = oneData + "\"" + k + "\":\"" + rs.getString(k) + "\",";
}
oneData = "{" + oneData.substring(0, oneData.length() - 1) + "},";
result = result + oneData;
}
if (result.length() > 0) {
result = "[" + result.substring(0, result.length() - 1) + "]";
} else {
result = "{\"data_num\":\"0\"}";
}
rs.close();
ps.close();
conn.close();
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
3.业务区:
package WareHouseInfoManage;
import java.util.List;
import java.util.Map;
public class WareHouseInfoManage extends ebms.MySystem {
public String add(Map m, List<String> l) {
try {
String r = "";
sql = "insert into warehouse_info(w_name,w_addr,w_volume) values(?,?,?)";
r = noselect(m, l);
return r;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public String list(Map m, List<String> l) {
sql = "select * from warehouse_info where w_id=?";
select(m, l);
return result;
}
}
4.前端:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>仓库信息管理</title>
<style>
* {
margin: 0px;
padding: 0px;
}
.t1 {
float: left;
width: 150px;
}
.t5 {
float: right;
width: 300px;
}
.t3 {
text-align: right;
bottom: 0px;
}
.t3 button {
padding: 10px;
}
.t4 {
float: right;
position: relative;
top: -30px;
right: 30px;
border-radius: 20px;
background-color: #dededd;
}
.t4:hover {
background: #cdcd99;
cursor: pointer;
}
.t6 {
height: 30px;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<center>
<div style="margin-top: 200px;">
<div
style="width: 500px; height: 400px; z-index: 5; border: 2px solid black; padding: 10px;">
<div style="height: 80px;">
<h1 id="inud">添加仓库</h1>
<a class="t4" style="width: 30px; height: 30px; line-height: 28px;"
title="退出">X</a>
</div>
<div class='t6'>
<div class="t1">名称</div>
<div class="t5">
<input>
</div>
</div>
<div class='t6'>
<div class="t1">地址</div>
<div class="t5">
<input>
</div>
</div>
<div class='t6'>
<div class="t1">容量</div>
<div class="t5">
<input>立方米
</div>
</div>
<div class="t3">
<div id="submit">
<button style="width: 100%;" @click="add">提交</button>
</div>
</div>
</div>
</div>
</center>
</body>
</html>
科技改变生活,进步源于分享,君子爱财,取之有道,道者,天地人和。
解释:君子爱财,取之有道。如果一个人快速敛财,比如每小时进帐几千块,如此进行半年,对于这个地区是会构成巨大的威胁,因为我们的钱都是本质都是来自资源,而我们的资源是太阳能,是被地球接受的太阳能被现有的开采资源的工具最大开采限度的开采。半年内这个开采总量变化不大,如果有人取得多了,那么就有人取得少了,少了最直接的就是饭桌上吃的东西少了,这是连锁反应,原因是大量的资源被同一个人取了,他又没花光这些资源。君子有财,取之有道可能不单单是说手段,也说的是取的量,贪得无厌的大佬反而对社会不利。