JSP+Servlet+javabean+oracle实现页面多条件模糊查询

之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写oracle,查了一下资料试了一下,把代码帖出来

oracle的数据源配置也不同:

driverName=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:orcl
username=marketManager
pwd=marketManager

直接帖实现类(特别注意红色代码体):

package pb.market.com.cn.dao.impl;

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

import pb.market.com.cn.dao.ProviderDao;
import pb.market.com.cn.pojo.Provider;
import pb.market.com.cn.util.BaseDao;

public class ProviderDaoImpl extends BaseDao implements ProviderDao {

    //获取供应商列表
    public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
        List<Provider> providerList =new ArrayList<Provider>();
        String sql="select * from ( select rownum as r,a.* from gongyingshang a where "+where+" rownum<=? ) where r>?";
        Object[] params ={pageSize*pageNo,(pageNo-1)*pageSize};
        if(this.getConnection()){
            System.out.println(sql);
            ResultSet rs = this.executeQuery(sql, params);
            try {
                while(rs.next()){
                    Provider provider = new Provider();
                    provider.setId(rs.getInt("id"));
                    provider.setGysno(rs.getInt("gysno"));
                    provider.setGysname(rs.getString("gysname"));
                    provider.setGystel(rs.getString("gystel"));
                    provider.setGysfax(rs.getString("gysfax"));
                    provider.setCreatedate(rs.getTimestamp("createdate"));
                    provider.setCreateby(rs.getString("createby"));
                    provider.setModifydate(rs.getTimestamp("modifydate"));
                    provider.setModifyby(rs.getString("modifyby"));
                    providerList.add(provider);

                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                this.closeConnection();
            }
        }
        return providerList;
    }
    /*public static void main(String[] args) {

        ProviderDao dd=new ProviderDaoImpl();
        String where="金";
        String where1="gysname like ‘%"+where+"%‘ and";
        List<Provider> providerList =dd.getProviderList(1, 5, where1);

        for (Provider provider : providerList) {
            System.out.println("11111111111111");
            System.out.println(provider.getId());
        }

    }*/

    //获取供应商总数量
    public int getProviderCount(String where) {
        int count=0;
        String sql="select count(*)as count from gongyingshang "+where;
        Object[] params={};
        if(this.getConnection()){
            ResultSet rs  =this.executeQuery(sql, params);
            try {
                if(rs.next()){
                    count = rs.getInt("count");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                this.closeConnection();
            }
        }
        return count;
    }
}

中间的service实现类,我的业务较简单,service层基本不做什么,只是调用一下dao层实现类的方法而已:

package pb.market.com.cn.service.impl;

import java.util.List;

import pb.market.com.cn.dao.ProviderDao;
import pb.market.com.cn.dao.impl.ProviderDaoImpl;
import pb.market.com.cn.pojo.Provider;
import pb.market.com.cn.service.ProviderService;

public class ProviderServiceImpl implements ProviderService {
    private ProviderDao providerDao;
    public ProviderServiceImpl(){
        providerDao=new ProviderDaoImpl();
    }
    public List<Provider> getProviderList(int pageNo, int pageSize, String where) {
        return providerDao.getProviderList(pageNo, pageSize, where);
    }
    public int getProviderCount(String where) {
        return providerDao.getProviderCount(where);
    }

}

servlet:

package pb.market.com.cn.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import pb.market.com.cn.pojo.Provider;
import pb.market.com.cn.service.ProviderService;
import pb.market.com.cn.service.impl.ProviderServiceImpl;

public class ProviderListServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            ProviderService providerService =new ProviderServiceImpl();
            StringBuffer sb =new StringBuffer(1024);
            StringBuffer sb1 =new StringBuffer(1024);
            //获取模糊查询的值
            String where = request.getParameter("proName");
            //System.out.println("where================="+where);
            //如果为空
            if(where!=null && !"".equals(where)){
                sb.append("where gysname like ‘%"+where+"%‘");
                sb1.append("gysname like ‘%"+where+"%‘ and");
            }
            //设置每页显示3条
            int pageSize=3;
            //得总条数
            int totalCount =providerService.getProviderCount(sb.toString());

            //得到总页数,如果总页数对一页的量取模==0,则。。。
            int totalPageCount=0;
            if((totalCount%pageSize)==0){
                totalPageCount=totalCount/pageSize;
            }else{
                totalPageCount=totalCount/pageSize +1;
            }
            //获取当前页,默认一打开进来即是第1页
            String pageIndex = request.getParameter("pageIndex");
            //System.out.println("pageIndex==============="+pageIndex);
            int currentPageNo=0;
            if(pageIndex==null){
                currentPageNo=1;
            }else{
                //System.out.println("这里怎么可能进得来???????????");
                currentPageNo= Integer.parseInt(pageIndex);
            }

            // 首页和尾页的异常控制
            if (currentPageNo <= 0) {
                currentPageNo = 1;
            } else if (currentPageNo > totalPageCount) {
                currentPageNo = totalPageCount;
            }
            //把各个页码传给JSp
            request.setAttribute("pageSize", pageSize);
            request.setAttribute("totalCount", totalCount);
            request.setAttribute("totalPageCount", totalPageCount);
            request.setAttribute("currentPageNo", currentPageNo);
            //获取providerList
            List<Provider> providerList = providerService.getProviderList(currentPageNo, pageSize, sb1.toString());
            request.setAttribute("providerList", providerList);
            request.getRequestDispatcher("/jsp/providerList.jsp").forward(request, response);

        }catch(Exception e){
            e.printStackTrace();
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);

    }

}

后面的JSP页面我就省略不写了。。。。。跟文头说的那篇mysql流程是一样,写法也类似

时间: 2024-11-05 18:46:45

JSP+Servlet+javabean+oracle实现页面多条件模糊查询的相关文章

JSP+Servlet+javabean+mysql实现页面多条件模糊查询(转载)

需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标题关键字,点GO按扭 3.选择分类,再输入关键字,点GO按扭 我这里用了MVC分层模式来进行的,所以一步步讲解吧,上源码: 因为我一个class里写了很多不同的业务,所以帖代码只帖当前步 dao层: 1 //当前页显示的新闻信息pageNo 当前页码,pagePerCount是每页多少条数据 2 p

JSP+Servlet+javabean实现页面多条件模糊查询

需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标题关键字,点GO按扭 3.选择分类,再输入关键字,点GO按扭 我这里用了MVC分层模式来进行的,所以一步步讲解吧,上源码: 因为我一个class里写了很多不同的业务,所以帖代码只帖当前步 dao层: 1 //当前页显示的新闻信息pageNo 当前页码,pagePerCount是每页多少条数据 2 p

Java Web学习(30): 使用JSP+Servlet+JavaBean实现用户登录

实现用户登录 用户名admin,密码admin,登录成功使用服务器内部跳转到login_success2.jsp页面,并且提示登录成功的用 户名,如果登录失败则跳转到login_failure2.jsp页面. 之前我们使用JSP实现过,也JSP+JavaBean实现过,这一次我们更加细化,使用JSP+Servlet+JavaBean实现用 户登录,好多的源码也是在前面写过. 我们先来看整体的目录结构: 再来看看源代码: 实体类Users.java源代码: package com.entity;

基于JSP+Servlet+JavaBean的图片或文件上传

基于JSP+Servlet+JavaBean的图片或文件上传 一.概述 现在不管是博客论坛还是企业办公,都离不开资源的共享.通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的. 下面我就为大家介绍 web项目中的这一上传功能,那么文件是如何从本地发送到服务器的呢?大家可以在在线视频课程进修学习<基于JSP+Servlet+JavaBean的人力资源管理系统开发>中第22课-项目开发-其它功能完善-图片

基于JSP+Servlet+JavaBean的人力资源管理系统开发课程

<基于JSP+Servlet+JavaBean的人力资源管理系统开发> 课程观看地址:http://www.xuetuwuyou.com/course/53 讲师:蒋子厚(http://www.xuetuwuyou.com/user/1984) 课程出自学途无忧网:http://www.xuetuwuyou.com 课程介绍 一.课程使用到的软件及对应的版本 1.jdk 1.7 2.tomcat 7.0 3.MySQL6.0+ 4.navicat 9 + 5.Macromedia Dreamw

jsp+servlet+javabean开发web项目

一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: jsp发出请求到web-- web接收请求并匹配请求对应的servlet-- servlet调用数据库dao层操作数据库-- 如果有数据传递,放到request或者session中 重点:servlet会执行doService()方法来判断调用doGet()或者doPost() 三.开发步骤: 1.

JSP+Servlet+JavaBean

MVC是三个单词的缩写:M,Model(模型):V,View( 视图 ),C,Control(控制). MVC模式的目的就是实现Web系统的职能分工, Model层:实现系统的业务逻辑,即javaBean部分 View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jsp Control层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了 下面我们用MVC设

Jsp+Servlet+JavaBean经典MVC模式理解

MVC 模式目的(实现Web系统的职能分工). 在Java EE中,Jsp+Servlet+JavaBean算是里面经典的模式,是初学者必备的知识技能. M, Model(模型)实现系统的业务逻辑 1. 通过DAO实现操作数据库的业务逻辑 2. 其他系统业务逻辑 JavaBean职能 V, View(视图)负责与用户交互,即在界面上展示数据对象给用户 Jsp职能 C, Controler(控制)Model与View之间沟通的桥梁 1. 分派用户的请求并选择适当的视图用于显示 2. 解释用户的输入

Jsp+Servlet+JavaBean学习阶段案例-留言板(MessageBoard)

Jsp+Servlet+JavaBean学习阶段的一个案例总结 名称:留言板(MessageBoard) 开发技术:Jsp+Servlet+JavaBean 数据库:Mysql 开发工具:IntelliJ IDEA 2016.1.3 服务器:Tomcat 8.0.36 功能说明 普通用户:增加删除修改留言信息 管理员:增加删除修改留言信息.管理用户.设置用户发帖留言权限 数据库结构 tb_user表 字段 类型 名称 说明 id int id name nvarchar 姓名 password