zoukankan      html  css  js  c++  java
  • java--easyUI+struts+JSP实现简单的增删查改(增)

    1.entity类

    package com.xiaoxiong.entity;
    
    public class Dept {
        private Integer deptno;
        private String dname;
        
        
        public Integer getDeptno() {
            return deptno;
        }
        public void setDeptno(Integer deptno) {
            this.deptno = deptno;
        }
        public String getDname() {
            return dname;
        }
        public void setDname(String dname) {
            this.dname = dname;
        }
        
    }
    Dept
    package com.xiaoxiong.entity;
    
    public class Emp {
        private Integer id;
        private String uname;
        private Integer age;
        private Double salary;
        private Integer deptno;
        
        
        public void setId(Integer id) {
            this.id = id;
        }
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public Double getSalary() {
            return salary;
        }
        public void setSalary(Double salary) {
            this.salary = salary;
        }
        public Integer getDeptno() {
            return deptno;
        }
        public void setDeptno(Integer deptno) {
            this.deptno = deptno;
        }
        public Integer getId() {
            return id;
        }
    }
    Emp

    2.数据库连接工具类

    package com.xiaoxiong.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class ConnectUtil {
        //定义连接数据库参数
        private static String drivers = "com.mysql.jdbc.Driver";
        private static String url = "jdbc:mysql://localhost:3306/dbtest";
        private static String user = "root";
        private static String password = "a123456";
        private static Connection conn = null;
        
        /**
         * 连接数据库
         * @return
         */
        public static Connection getConn(){
            try {
                //加载驱动
                Class.forName(drivers);
                
                //连接数据库
                conn = DriverManager.getConnection(url, user, password);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
        
        /**
         * 关闭数据库
         * @param conn
         */
        public static void close(Connection conn){
            try {
                if(conn != null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
    }
    ConnectUtil

    3.sql逻辑DAO类

    package com.xiaoxiong.Dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.xiaoxiong.util.ConnectUtil;
    
    public class BaseDao {
        
        //定义数据库变量
        private Connection conn = null;
        private PreparedStatement ps = null;
        private ResultSet rs = null;
        
        //连接数据库
        public void init(){
            conn = ConnectUtil.getConn();
        }
        
        /**
         * 执行查询语句
         * @param sql
         * @param parameters
         * @return
         */
        public ResultSet query(String sql, Object...parameters){
            //连接数据库
            init();
            //定义list集合存储查询返回的结果
            System.out.println("=====查询SQL为:"+sql);
            try {
                //预编译sql语句
                ps = conn.prepareStatement(sql);
                
                //为sql语句传值
                for(int i=1; i<=parameters.length; i++){
                    ps.setObject(i, parameters[i-1]);
                }
                
                //执行sql语句
                rs = ps.executeQuery();
                
            } catch (SQLException e) {
                e.printStackTrace();
            } 
            return rs;
        }
        
        /**
         * 执行非查询语句
         * @param sql
         * @param parameters
         * @return
         */
        public int update(String sql, Object...parameters){
            init();
            
            int num = 0;
            
            try {
                ps = conn.prepareStatement(sql);
                //为sql语句传值
                for(int i=1; i<=parameters.length; i++){
                    ps.setObject(i, parameters[i-1]);
                }
                
                num = ps.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return num;
        }
        
        /**
         * 查询数据总数
         * @param sql
         * @param parameters
         * @return
         */
        public int getCount(String sql, Object...parameters){
            init();
            int count = 0;
            
            try {
                ps = conn.prepareStatement(sql);
                for(int i=1; i<=parameters.length; i++){
                    ps.setObject(i, parameters[i-1]);
                }
                rs = ps.executeQuery();
                rs.next();
                count = rs.getInt(1);
                
            } catch (SQLException e) {
                e.printStackTrace();
            } 
            
            return count;
        }
        
        /**
         * 关闭数据库
         */
        public void close(){
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                ConnectUtil.close(conn);
            }
        }
    }
    BaseDao
    package com.xiaoxiong.Dao;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.xiaoxiong.entity.Dept;
    
    public class DeptDao extends BaseDao {
        
        /**
         * 查询部门信息
         * @return
         */
        public List<Dept> getDeptList(){
            ResultSet rs = null;
            List<Dept> list = new ArrayList<Dept>();
            
            StringBuffer sql = new StringBuffer();
            sql.append("select deptno,dname from dept ");
            
            rs = this.query(sql.toString());
            try {
                while(rs.next()){
                    Dept dept = new Dept();
                    dept.setDeptno(rs.getInt("deptno"));
                    dept.setDname(rs.getString("dname"));
                    
                    list.add(dept);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return list;
        }
    }
    DeptDao
    package com.xiaoxiong.Dao;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.xiaoxiong.entity.Emp;
    
    public class EmpDao extends BaseDao {
        public ResultSet rs = null;
        /**
         * 分页查询用户信息
         * @param page    页数
         * @param rows    每页显示的行数
         * @return list 结果集
         */
        public List<Emp> searchPage(int page, int rows,String ename, int deptno){
            List<Emp> list = new ArrayList<Emp>();
            StringBuffer sql = new StringBuffer();
            //sql语句
            sql.append("SELECT e.id,e.uname,e.age,e.salary,e.deptno from emp e ");
            //计算起始行
            int startRows = (page-1)*rows;
            
            int countRows = 0;
            
            //调用query()查询用户列表
            if(ename == null){
                //求最大数据行数
                countRows = this.maxRows(deptno);
                //三元运算判断起始值是否大于最大行数
                startRows=startRows>countRows?countRows:startRows;
                sql.append("where deptno=? ");
                sql.append("limit ?,? ");
                //测试
                System.out.println("=====>sql语句为:"+sql.toString());
                rs = this.query(sql.toString(),deptno,startRows,rows);
            }else{
                countRows = this.maxRowsByName(ename, deptno);
                sql.append("where name like ? and deptno=? ");
                sql.append("limit ?,? ");
                //测试
                System.out.println("=====>sql语句为:"+sql.toString());
                
                rs = this.query(sql.toString(),"%"+ename+"%",deptno,startRows,rows);
            }
            try {
                //将rs结果集中的数据遍历出来存入emp实例中
                while(rs.next()){
                    Emp emp = new Emp();
                    emp.setId(rs.getInt("id"));
                    emp.setUname(rs.getString("uname"));
                    emp.setAge(rs.getInt("age"));
                    emp.setSalary(rs.getDouble("salary"));
                    emp.setDeptno(rs.getInt("deptno"));
                    
                    //加入list集合中
                    list.add(emp);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return list;
        }
        
        /**
         * 新增员工模块
         * @param emp
         * @return
         */
        public int addEmp(Emp emp){
            StringBuffer sql = new StringBuffer();
            sql.append("INSERT INTO emp(uname,age,salary,deptno) VALUES(?,?,?,?) ");
            
            return this.update(sql.toString(),emp.getUname(),emp.getAge(),emp.getSalary(),emp.getDeptno());
        }
        
        /**
         * 修改员工信息模块
         * @param emp
         * @return
         */
        public int updateEmp(Emp emp){
            StringBuffer sql = new StringBuffer();
            sql.append("UPDATE emp SET uname=?,age=?,salary=?,deptno=? WHERE id=? ");
            
            return this.update(sql.toString(), emp.getUname(),emp.getAge(),emp.getSalary(),emp.getDeptno(),emp.getId());
        }
        
        /**
         * 删除员工信息
         * @param id
         * @return
         */
        public int deleteEmp(Integer id){
            StringBuffer sql = new StringBuffer();
            sql.append("delete from emp where id=? ");
            
            return this.update(sql.toString(), id);
        }
        
        /**
         * 通过Id查询用户信息
         * @param id
         * @return
         */
        public List<Emp> queryById(Integer id){
            List<Emp> list = new ArrayList<Emp>();
            StringBuffer sql = new StringBuffer();
            sql.append("SELECT e.id,e.uname,e.age,e.salary,e.deptno from emp e ");
            sql.append("where id=? ");
            
            rs = this.query(sql.toString(), id);
            try {
                //将rs结果集中的数据遍历出来存入emp实例中
                while(rs.next()){
                    Emp emp = new Emp();
                    emp.setUname(rs.getString("uname"));
                    emp.setAge(rs.getInt("age"));
                    emp.setSalary(rs.getDouble("salary"));
                    emp.setDeptno(rs.getInt("deptno"));
                    
                    //加入list集合中
                    list.add(emp);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } 
            
            return list;
        }
        
        /**
         * 最大条数
         * @param deptno
         * @return
         */
        public int maxRows(int deptno){
            StringBuffer sql = new StringBuffer();
            
            sql.append("select count(*) from emp where deptno=? ");
            System.out.println("========maxRows的SQL:"+sql);
            return this.getCount(sql.toString(),deptno);
            
        }
        
        public int maxRowsByName(String ename,int deptno){
            StringBuffer sql = new StringBuffer();
            
            sql.append("select count(*) from emp ");
            sql.append("where ename like ? and deptno=? ");
            
            return this.getCount(sql.toString(),"%"+ename+"%", deptno);
        }
        
    }
    EmpDao

    4.Action类

    package com.xiaoxiong.action;
    
    import java.util.List;
    
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.xiaoxiong.Dao.DeptDao;
    import com.xiaoxiong.entity.Dept;
    
    public class DeptAction extends ActionSupport {
        DeptDao dao = new DeptDao();
        
        public String deptList(){
            
            List<Dept> list = dao.getDeptList();
    //        ServletActionContext.getRequest().setAttribute("deptlist", list);
            ActionContext.getContext().put("deptlist", list);
            System.out.println("执行deptList方法----"+list.toArray());
            
            return this.SUCCESS;
        }
        
    }
    DeptAction
    package com.xiaoxiong.action;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.ServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    
    import com.google.gson.Gson;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    import com.xiaoxiong.Dao.EmpDao;
    import com.xiaoxiong.entity.Emp;
    
    public class EmpAction extends ActionSupport implements ModelDriven<Emp> {
        //定义一个emp参数
        private Emp emp;
        //页面数
        private Integer page;
        //行数
        private Integer rows;
        //模糊查询的条件
        private String ename;
        
        //实例化一个EmpDao类
        EmpDao dao = new EmpDao();
        
        public String searchPage() throws IOException{
            System.out.println("执行查询语句"+emp.getDeptno());
            List<Emp> list = new ArrayList<Emp>();
            int count = 0;
            list = dao.searchPage(page, rows, ename,emp.getDeptno());
            if(ename==null){
                count = dao.maxRows(emp.getDeptno());
            }else{
                count = dao.maxRowsByName(ename, emp.getDeptno());
            }
            
            //map存储结果集
            Map map = new HashMap();
            map.put("total", count);
            map.put("rows", list);
            
            //将数据转换为json格式
            String json = new Gson().toJson(map);
            
            System.out.println("json数据==="+json);
            //将json数据传送给页面
            ServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            
            response.getWriter().println(json);
            
            return this.NONE;
        }
        
        
        @Override
        public Emp getModel() {
            emp = new Emp();
            return emp;
        }
    
        public Integer getPage() {
            return page;
        }
    
        public void setPage(Integer page) {
            this.page = page;
        }
    
        public Integer getRows() {
            return rows;
        }
    
        public void setRows(Integer rows) {
            this.rows = rows;
        }
    
        public String getEname() {
            return ename;
        }
    
        public void setEname(String ename) {
            this.ename = ename;
        }
        
    }
    EmpAction

    5.struts.xml文件的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- DTD 这是一个用来描述XML文件能写什么标签不能写什么标签的规则文件 -->
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        <package name="deptPackage" extends="struts-default" namespace="/">
                <action name="deptList" class="com.xiaoxiong.action.DeptAction" method="deptList">
                    <result name="success">/index.jsp</result>
                </action>
        </package>
    
        <package name="empPackage" extends="struts-default" namespace="/">
            <action name="searchPage" class="com.xiaoxiong.action.EmpAction" method="searchPage"></action>
        </package>
    </struts> 
    struts.xml

    6.easyUI实现JSP页面

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        <title>My JSP 'index.jsp' starting page</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        
        <!-- Easyui主题CSS -->
        <link rel="stylesheet" href="style/easyui/ui-pepper-grinder/easyui.css" type="text/css"></link>
        <!-- 图标CSS -->
        <link rel="stylesheet" href="style/easyui/icon.css" type="text/css"></link></head>
        
        <script type="text/javascript" src="script/jquery.min.js"></script>
        <script type="text/javascript" src="script/jquery.easyui.min.js"></script>
        <style>
            .tab-body{
                overflow: hidden;
                    
            }
        </style>
        <script>
            $(function(){
                $("#treeFunctions").tree({
                    onClick : function(node){
                        console.info(node);//浏览器控制台打印节点数据
                        var deptno = node.attributes.deptno;
                        $("#grdEmp").datagrid("load",{
                            "deptno":deptno  //将deptno当值传送给服务端
                        });
                    }
                });
            });
        </script>
      </head>
       
      <body class="easyui-layout">
          <div region="north" style="height: 100px">
              <div style="background-color: red"></div>
          </div>
          
          <div region="west" title="系统列表" split=true style=" 300px">
              <div class="easyui-accordion" fit="true" border=false>
                  <div title="系统管理平台">
                      <ul class="easyui-tree" id="treeFunctions">
                          <li><span>部门信息</span>
                              <ul id="Departments">
                                <!-- Easyui中为树的节点自定义属性使用data-options -->
                                <c:forEach items="${deptlist }" var="d">
                                    <li data-options="attributes:{deptno :${d.deptno } }"><span>${d.dname }</span></li>
                                </c:forEach>
                            </ul>
                          </li>
                      </ul>
                  </div>
              </div>
          </div>
          <div region="center">
              <table id="grdEmp" pagination=true pageSize="5" pageList="[5]" class="easyui-datagrid" toolbar="#tb"
              fit=true url="/managerProject/searchPage" >
                  <thead>
                      <tr>
                        <th width="100" field="id">编号</th>
                        <th width="100" field="uname">姓名</th>
                        <th width="100" field="age">年龄</th>
                        <th width="100" field="salary">工资</th>
                        <th width="100" field="deptno">部门</th>
                    </tr>
                  </thead>
              </table>
          </div>    
          <div region="center">
              <div class="easyui-tabs" id="tabsMain" fit="true" border="false">
                  <div title="首页" ></div>
              </div>
          </div>
          <div id="tb">
            <input id="txtEname" class="easyui-textbox"/>
            <a id="btnQuery" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a>
            <a id="btnAdd" href="#" class="easyui-linkbutton" iconCls="icon-add">新增</a>
              <a id="btnEdit" href="#" class="easyui-linkbutton" iconCls="icon-edit">修改</a>
              <a id="btndelete" href="#" class="easyui-linkbutton" iconCls="icon-remove">删除</a>
            
        </div>
      </body>
    </html>
    index.jsp
  • 相关阅读:
    c#爬虫-从内存中释放Selenium chromedriver.exe终极杀
    领域驱动设计-从贫血模型到充血模型
    推荐:.Net 5开源免费的内容管理系统
    Exceptionless服务端本地化部署
    Chrome扩展程序开发
    SqlSugar+SqlServer+NetCore3.1 入门案例
    Linux Qt5 一. 开发环境安装
    Boost Mutex详细解说
    Y7000 2020 安装ubuntu 16.04.3双系统后无法识别无线网卡问题
    《视觉SLAM十四讲》第三讲习题7
  • 原文地址:https://www.cnblogs.com/rsdqc/p/5560508.html
Copyright © 2011-2022 走看看