基于servlet的轻量框架制作

轻量框架制作:(原创)

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>

科技改变生活,进步源于分享,君子爱财,取之有道,道者,天地人和。

解释:君子爱财,取之有道。如果一个人快速敛财,比如每小时进帐几千块,如此进行半年,对于这个地区是会构成巨大的威胁,因为我们的钱都是本质都是来自资源,而我们的资源是太阳能,是被地球接受的太阳能被现有的开采资源的工具最大开采限度的开采。半年内这个开采总量变化不大,如果有人取得多了,那么就有人取得少了,少了最直接的就是饭桌上吃的东西少了,这是连锁反应,原因是大量的资源被同一个人取了,他又没花光这些资源。君子有财,取之有道可能不单单是说手段,也说的是取的量,贪得无厌的大佬反而对社会不利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值