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="width: 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

时间: 2024-08-11 07:38:02

java--easyUI+struts+JSP实现简单的增删查改(增)的相关文章

java--easyUI+struts+JSP实现简单的增删查改

1.数据库工具类 package com.xiaoxiong.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnUtil { //定义连接数据库参数 private static String drivers = "com.mysql.jdbc.Driver"; private static String url

asp.net MVC最简单的增删查改!(详)

折腾了两天搞出来,但原理性的东西还不是很懂,废话不多说上图上代码 然后右键models,新建一个数据模型 注意我添加命名为lianxi 添加后如上 接下来在controllers添加控制器还有在Views中添加视图 注意控制器lianxi和视图的名字要一致,然后视图我是添加了3个分别是Index,insert,Modify,在控制器里分别有三个对应的函数 每当用URL访问视图时,他就调用了controllers对应的方法,例如 jiaEntities 就是建立模式时那个数据链接的名字      

Spring-Ldap连接Ldap及简单的增删查改

了解了Ldap的基本概念之后就是Ldap的使用问题了,就像连接MySQL数据库,操作MySQL数据库中数据一样,我们怎么连接到Ldap呢?又是怎么操纵ldap中的数据呢? 我也是不断的在网上查找资料,最终选择使用Spring-ldap进行数据库的连接,因为我的项目使用SpringMVC+Spring开发,直接就利用Spring-ldap了,挺简单的. 步骤一:依赖(maven工程) <!-- 添加Spring 对LDAP的支持 --> <dependency> <groupI

JAVA原生mvc实现用户信息的增删查改

笔者最近学完jsp和servlet,于是心血来潮的打算写个简单的用户案例 环境准备: 开发工具eclipse jdk-1.8.0_72 tomcat-9.0.5 前端部分: 1.自己手写了一套样式 2.使用ajax交互 目录结构: java目录: 前端目录 需求分析: 1.能够实现用户的登录和注册 2.能够实现对用户信息的增删查改 3.登录过一次的用户保存登录记录,也就是记录session 由于笔者不是很擅长写界面,所以后台界面部分不是写的很好看,这里就先预览一遍 由于代码量太多了,我就把这个项

nodejs连接mysql并进行简单的增删查改

最近在入门nodejs,正好学习到了如何使用nodejs进行数据库的连接,觉得比较重要,便写一下随笔,简单地记录一下 使用在安装好node之后,我们可以使用npm命令,在项目的根目录,安装nodejs中的mysql模块 npm install mysql 在连接数据库之前,要先引入nodejs连接处理mysql的模块 var mysql = require('mysql'); 类似php连接mysql的方式,编写连接代码 //使用nodejs处理mysql的模块,使用创建连接方法,创建与mysq

mybatis实现简单的增删查改

接触一个新技术,首先去了解它的一些基本概念,这项技术用在什么方面的.这样学习起来,方向性也会更强一些.我对于mybatis的理解是,它是一个封装了JDBC的java框架.所能实现的功能是对数据库进行增删查改的功能. 首先,需要搭建一个demo,用于学习这个框架的使用方式.(1)在IDE上建立自己的工程目录,一个普通的java工程项目就好,我电脑本地的IDE是Myeclipse.(2)引入搭建框架需要的jar包,这个直接去网上搜索就好.(3)框架的核心实现都是基于配置的,引入jar包后,先配置my

Spring Boot集成ElasticSearch实现简单的增删查改接口

SpringBoot集成ElasticSearch pom.xml文件中,依赖的各jar包版本如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> &l

通过JDBC进行简单的增删查改

目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4)update (5)select (6)delete 四.测试 五.代码分析 六.思考问题 前言:什么是JDBC 维基百科的简介: Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的

简单的增删查改

package com.pro.dao.impl; import java.sql.Date;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.sql.Connection;import java.sql.Types;import java.util.Vector; import oracle.