JSP分页

本文介绍了一个Java Web应用程序的实现细节,包括数据库连接、分页查询、增删改查(CRUD)操作及用户界面交互等功能。通过BaseDao类实现了基本的数据访问操作,Dao接口定义了部门实体的操作规范,DeptImpl类提供了具体的实现。

BaseDao

package zc.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import zc.untils.ConfigManager;

public class BaseDao {
    Connection connection = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    // 连接数据库
    public boolean getConnection() {
        try {
            Class.forName(ConfigManager.getInstance().getString("driver"));
            String url = ConfigManager.getInstance().getString("url");
            String user = ConfigManager.getInstance().getString("user");
            String password = ConfigManager.getInstance().getString("password");
            connection = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    // 增删改返回Int类型的
    public int upDate(String sql, Object[] params) {
        int update = 0;
        try {
            if (this.getConnection()) {
                ps = connection.prepareStatement(sql);
                for (int i = 0; i < params.length; i++) {
                    ps.setObject(i + 1, params[i]);
                }
                update = ps.executeUpdate();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return update;

    }

    // 用ResultSet接收
    public ResultSet select(String sql, Object[] params) {
        try {
            if (this.getConnection()) {
                ps = connection.prepareStatement(sql);
                for (int i = 0; i < params.length; i++) {
                    ps.setObject(i + 1, params[i]);
                }
                rs = ps.executeQuery();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;

    }

    // 释放资源
    public static void close(Connection connection, PreparedStatement ps,ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Dao

package zc.dao;

import java.util.List;

import zc.entity.DeptEntity;

public interface Dao {

    // 查询有多少条数据
    public int getCount();

    // pageNo当前页码 pageSize页面容量
    public List<DeptEntity> selectPage(int pageNo, int pageSize);

    // 添加数据
    public boolean addDept(DeptEntity entity);

    // 删除数据
    public boolean deleteDept(DeptEntity entity);

    // 根据ID改变名字
    public boolean setDept(DeptEntity entity);

    // 全查
    public List<DeptEntity> allSelect();
}

Impl

package zc.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import zc.dao.BaseDao;
import zc.dao.Dao;
import zc.entity.DeptEntity;

public class DeptImpl extends BaseDao implements Dao  {
    //查询有多少条数据
    public int getCount(){
        int getcount=0;
        String sql="select count(1) from dept";
        Object[]params={};
        ResultSet rs=this.select(sql, params);
        try {
            while(rs.next()){
                getcount=rs.getInt(1);//等价于rs.getInt("did");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return getcount;
    }

    //pageNo当前页码  pageSize页面容量
    public List<DeptEntity> selectPage(int pageNo,int pageSize){
        List<DeptEntity>list=new ArrayList<DeptEntity>();
        String sql="select *from dept limit ?,?";
        Object[]params={(pageNo-1)*pageSize,pageSize};
        ResultSet rs=this.select(sql, params);
        try {
            while(rs.next()){
                DeptEntity entity=new DeptEntity();
                int did=rs.getInt("did");
                String dname=rs.getString("dname");
                String demc=rs.getString("demc");
                entity.setDid(did);
                entity.setDname(dname);
                entity.setDemc(demc);
                list.add(entity);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
    //添加数据
    public boolean addDept(DeptEntity entity){
        boolean flag=false;
        String sql="insert into dept(dname,demc) values(?,?)";
        Object[]params={entity.getDname(),entity.getDemc()};
        int i=this.upDate(sql, params);
        if(i>0){
            System.out.println("插入成功");
            flag=true;
        }else{
            System.out.println("插入失败");
        }
        return flag;
    }
    //删除数据
    public boolean deleteDept(DeptEntity entity){
        boolean flag=false;
        String sql="delete from dept where did=?";
        Object[]params={entity.getDid()};
        int i=this.upDate(sql, params);
        if(i>0){
            System.out.println("删除成功");
            flag=true;
        }else{
            System.out.println("插入失败");
        }
        return flag;
    }
    //根据ID改变名字
    public boolean setDept(DeptEntity entity){
        boolean flag=false;
        String sql="update dept set dname=? where did=?";   
        Object[]params={entity.getDname(),entity.getDid()};
        int i=this.upDate(sql, params);
        if(i>0){
            System.out.println("修改成功");
            flag=true;
        }else{
            System.out.println("修改失败");
        }
        return flag;
    }
    //全查
    public List<DeptEntity> allSelect(){
        List<DeptEntity>list=new ArrayList<DeptEntity>();
        String sql="select *from dept";
        Object[]params={};
        ResultSet rs=this.select(sql, params);
        try {
            while(rs.next()){
                DeptEntity entity=new DeptEntity();
                int did=rs.getInt("did");
                String dname=rs.getString("dname");
                String demc=rs.getString("demc");
                entity.setDid(did);
                entity.setDname(dname);
                entity.setDemc(demc);
                list.add(entity);       
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}

Entity

package zc.entity;

public class DeptEntity {
    private int did;
    private String dname;
    private String demc;
    public int getDid() {
        return did;
    }
    public void setDid(int did) {
        this.did = did;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getDemc() {
        return demc;
    }
    public void setDemc(String demc) {
        this.demc = demc;
    }
    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "DeptEntity [did=" + did + ", dname=" + dname + ", dmec=" + demc
                + "]";
    }
}

Service

package zc.service;

import java.util.List;

import zc.entity.DeptEntity;

public interface DeptService {
    // 查询有多少条数据
    public int getCount();

    // pageNo当前页码 pageSize页面容量
    public List<DeptEntity> selectPage(int pageNo, int pageSize);

    // 添加数据
    public boolean addDept(DeptEntity entity);

    // 删除数据
    public boolean deleteDept(DeptEntity entity);

    // 根据ID改变名字
    public boolean setDept(DeptEntity entity);

    // 全查
    public List<DeptEntity> allSelect();
}

ServiceImpl

package zc.service.impl;

import java.util.List;

import zc.dao.Dao;
import zc.entity.DeptEntity;
import zc.impl.DeptImpl;
import zc.service.DeptService;

public class DeptServiceImpl implements DeptService {
    private Dao dao;
    public DeptServiceImpl(){
        dao=new DeptImpl();
    }

    // 查询有多少条数据
    public int getCount(){
        return dao.getCount();
    }

    // pageNo当前页码 pageSize页面容量
    public List<DeptEntity> selectPage(int pageNo, int pageSize){
        return dao.selectPage(pageNo, pageSize);
    }

    // 添加数据
    public boolean addDept(DeptEntity entity){
        return dao.addDept(entity);
    }

    // 删除数据
    public boolean deleteDept(DeptEntity entity){
        return dao.deleteDept(entity);
    }

    // 根据ID改变名字
    public boolean setDept(DeptEntity entity){
        return dao.setDept(entity);
    }

    // 全查
    public List<DeptEntity> allSelect(){
        return dao.allSelect();
    }
}

Untils

package zc.untils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ConfigManager {
    // 私有静态
    private static ConfigManager configManager;
    // 私有Properties
    private Properties properties;

    // 构造私有化
    private ConfigManager() {
        String configFile = "database.properties";
        InputStream in = ConfigManager.class.getClassLoader().getResourceAsStream(configFile);
        // 新建properties方法
        properties = new Properties();
        try {
            properties.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            if (in != null) {
                in.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    // 静态类
    public static synchronized ConfigManager getInstance() {
        if (configManager == null) {
            synchronized (ConfigManager.class) {
                if (configManager == null) {
                    configManager = new ConfigManager();
                }
            }
        }
        return configManager;

    }

    // 公有
    public String getString(String key) {
        return properties.getProperty(key);
    }
}

分页工具

package zc.untils;

//分页的工具类:计算总页数=新闻总数量/每页显示几条
public class PageSupport {
    // 当前页码
    private int currenPageNo = 1;
    // 新闻总数量
    private int totalCount = 0;
    // 页面容量=每页显示几条
    private int pageSize = 0;
    // 总页数
    private int totalPageCount = 1;

    public int getCurrenPageNo() {
        return currenPageNo;
    }

    public void setCurrenPageNo(int currenPageNo) {
        if (currenPageNo > 0) {
            this.currenPageNo = currenPageNo;
        }
    }

    public int getTotalCount() {
        return totalCount;
    }

    // 计算总页数
    public void setTotalPageCountByRs() {
        if (this.totalCount % this.pageSize == 0) {
            this.totalPageCount = this.totalCount / this.pageSize;
        } else if (this.totalCount % this.pageSize != 0) {
            this.totalPageCount = this.totalCount / this.pageSize + 1;
        } else {
            this.totalPageCount = 0;
        }
    }

    // 总数量:在设置总数量时,同步计算总页数
    public void setTotalCount(int totalCount) {
        if (totalCount >= 0) {
            this.totalCount = totalCount;
            // 设置总页数
            this.setTotalPageCountByRs();
        }
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalPageCount() {
        return totalPageCount;
    }

    public void setTotalPageCount(int totalPageCount) {
        this.totalPageCount = totalPageCount;
    }
    // 流程:去数据库查询数据总数量→设置新闻总数量,同时计算新闻总页数setTotalCount(X)→拿到总页数getTotalPageCount
}

index页面

<%@page import="zc.entity.DeptEntity"%>
<%@page import="zc.untils.PageSupport"%>
<%@page import="zc.service.DeptService"%>
<%@page import="zc.service.impl.DeptServiceImpl"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>


<table>
    <%
        DeptService service = new DeptServiceImpl();
        //分页查询并显示
        //当前页码
        String currentPage = request.getParameter("pageIndex");
        if (currentPage == null) {
            //用户首次访问
            currentPage = "1";
        }
        //当前页码转换为INTERGER类型
        int pageIndex = Integer.parseInt(currentPage);
        //获取新闻总数量
        int totalCount = service.getCount();
        //每页显示几条新闻,页面容量
        int pageSize = 3;
        //获取总页数
        PageSupport pageSupport = new PageSupport();
        //设置当前页码
        pageSupport.setCurrenPageNo(pageIndex);
        //设置每页显示几条,新闻容量
        pageSupport.setPageSize(pageSize);
        //把int totalCount的值给他,一set就会计算总页数
        pageSupport.setTotalCount(totalCount);
        //拿到总页数
        int totalPage = pageSupport.getTotalPageCount();
        //控制首页和尾页
        if (pageIndex < 1) {
            pageIndex = 1;
        } else if (pageIndex > totalPage) {
            pageIndex = totalPage;
        }
        List<DeptEntity> list = service.selectPage(pageIndex, pageSize);
        for (DeptEntity d : list) {
    %>
    <tr>
        <td>did</td>
        <td>dname</td>
        <td>demc</td>
    </tr>
    <tr>
        <td><%=d.getDid()%></td>
        <td><%=d.getDname()%></td>
        <td><%=d.getDemc()%></td>
    </tr>
    <%
        }
    %>
</table>
<a><%=totalCount%>条数据&nbsp;&nbsp;当前<%=pageIndex%>页/<%=totalPage%></a>
<%
    if (pageIndex > 1) {
%>
<a href="index.jsp?pageIndex=1">首页</a>
<a href="index.jsp?pageIndex=<%=pageIndex - 1%>">上一页</a>
<%
    }
    if (pageIndex < totalPage) {
%>
<a href="index.jsp?pageIndex=<%=pageIndex + 1%>">下一页</a>
<a href="index.jsp?pageIndex=<%=totalPage%>">最后一页</a>

<%
    }
%>
<form action="login.jsp" method="post">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登录">
<a href="register.jsp">注册</a>
<a href="delete.jsp">删除</a>
<a href="change.jsp">更改用户名</a>
</form>

登录判断

<%@page import="zc.entity.DeptEntity"%>
<%@page import="zc.service.DeptService"%>
<%@page import="zc.service.impl.DeptServiceImpl"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<%
    String user = request.getParameter("username");
    String pwd = request.getParameter("password");
    request.setCharacterEncoding("UTF-8");
    DeptService service = new DeptServiceImpl();
    List<DeptEntity> list = new ArrayList<DeptEntity>();
    list = service.allSelect();
    boolean flag = false;
    for (int i = 0; i < list.size(); i++) {
        //out.println("数据库里有的名字是:"+list.get(i).getDname()+"\t数据库里有的密码是:"+list.get(i).getDemc());
        if (user.equals(list.get(i).getDname())
                && pwd.equals(list.get(i).getDemc())) {
            flag = true;
            break;
        }
    }
    if (flag) {
        response.sendRedirect("loginsc.jsp");
    } else {
        request.getRequestDispatcher("index.jsp").forward(request,
                response);
    }
%>

注册判断

<%@page import="zc.entity.DeptEntity"%>
<%@page import="zc.service.impl.DeptServiceImpl"%>
<%@page import="zc.service.DeptService"%>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<%
    DeptService service = new DeptServiceImpl();
    request.setCharacterEncoding("UTF-8");
    DeptEntity entity = new DeptEntity();
    String user = request.getParameter("username");
    String pwd = request.getParameter("password");
    entity.setDname(user);
    entity.setDemc(pwd);
    boolean flag = service.addDept(entity);
    if (flag) {
        response.sendRedirect("index.jsp");
    } else {
        request.getRequestDispatcher("register.jsp");
    }
%>

删除判断

<%@page import="zc.entity.DeptEntity"%>
<%@page import="zc.service.DeptService"%>
<%@page import="zc.service.impl.DeptServiceImpl"%>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
    DeptService service=new DeptServiceImpl();
    DeptEntity entity=new DeptEntity();
    String did=request.getParameter("username");
    int id=Integer.parseInt(did);
    entity.setDid(id);
    boolean flag=service.deleteDept(entity);
    if(flag){
    response.sendRedirect("index.jsp");
    }else{
    request.getRequestDispatcher("delete.jsp").forward(request, response);
    }
%>

改变判断

<%@page import="zc.entity.DeptEntity"%>
<%@page import="zc.service.DeptService"%>
<%@page import="zc.service.impl.DeptServiceImpl"%>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<%
    request.setCharacterEncoding("utf-8");
    DeptService service = new DeptServiceImpl();
    DeptEntity entity = new DeptEntity();
    String did = request.getParameter("username");
    int id = Integer.parseInt(did);
    String username = request.getParameter("password");
    entity.setDid(id);
    entity.setDname(username);
    boolean flag = service.setDept(entity);
    if (flag) {
        response.sendRedirect("index.jsp");
    } else {
        request.getRequestDispatcher("register.jsp").forward(request,
                response);
    }
%>
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值