问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp如何按指定条件进行模糊查询

发布网友 发布时间:2022-05-01 10:55

我来回答

2个回答

懂视网 时间:2022-05-01 15:16

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

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流程是一样,写法也类似

 

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

标签:

热心网友 时间:2022-05-01 12:24

其实你只要在JSP页面选择了查询条件,将查询条件这些传入Servlet中进行处理,在Servlet中调用相应的数据库处理。模糊查询就是在这个的sql中进行定义的,需要你根据需要写出相应的sql。比如查询姓张的学生:
sql
=
"select
*
from
student_inf
where
stu_name
like
'张%'"
这仅是个举例,具体你看情况而定。
模糊查询就是在查询数据库的时候在sql上做文章,至于mvc模式,最简单的实现就是jsp+servlet+javaBean。如果楼主不清楚,查阅点资料。
希望我的回答对你有所帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天秤男吃醋的八大表现 天秤座男生吃醋时的表现 人工授精之后注意什么 人授后需要卧床休息吗 ...经两个月没发工资了,我不想干了,老板不给钱怎么办? 新手玩《兰斯10》这款游戏的快速通关攻略是什么? 兰斯10怎么用食券快速刷SSR 兰斯10二周目7cp怎么达成 兰斯10大侵攻达成条件介绍 跳舞同手同脚叫什么来着 喷油嘴清洗机主要功能 vs2010中调试c程序,如何定义一个函数在一个源文件里,再定义一个头文件包含该函数的原型 我用VS2010新建了一C++的项目,但是项目中源文件和头文件数量太多了,我把他们分开放在两个文件夹就报错了 C语言的老师说用多个源文件来组织代码什么意思呀,在VS里面直接添加源文件我知道,但是怎么吧他们连接 vs2017头文件的问题 我在VS2005中编写了一个程序,自己制作了头文件和源文件,再在主函数的文件里包含头文件,但是调用不了自 头文件与源文件关系和作业 微信上有哪个便民平台可以赚钱啊 用vs2010自己写的类,然后在另一个类的实现文件中添加头文件,为什么无法打开源文件? vs2008 新建项目没有头文件、源文件 ? 高分求解决办法。 VS如何编译一个包含多个头文件、源文件的项目? VS2010打开一个工程后,没有头文件,源文件和资源文件三个文件夹了。.h和.cpp全部都显示在一起了 vs2010怎样在类的源文件中包含另一个类的头文件 VS2015怎么添加自定义头文件 VS2013中怎么添加外部头文件和源文件及 工作需要,求全国各地微信便民平台,谢谢 温州本地便民平台多少? 郑州有可以发便民信息的吗? 淄博2023年中考物理学科作为会考科目 云南省2023年中考物理化学考试时间各占多长? 2023年北京中考体育有哪些项目 残奥运会什么时间演开幕式 残奥运会什么时候开幕 我眼镜片掉了,应该用什么胶水粘,是全框的? 第十届残疾人亚运会什么时候开始 微分期是哪个贷款 有个贷款公司叫微分期,有贷过款的人知道是不是倒闭了吗? 杭州微分期科技有限公司怎么样? 阿里微分期付款条件是什么 招徕微分期怎么办理? 阿里微可信吗,在阿里微分期付款买东西可靠吗 微滴分期怎么提交不了 租房因为甲方原因想要退房,但是合同没到期,不退押金,怎么维权 微粒分期是真的吗? 用交行信用卡在济南那买PSP可以分期??? 百合花的详细资料是什么? 有关百合花的资料 百合的简介 百合的资料 救命啊,jsp+JavaBean+servlet+Oracle做登陆界面 EV录屏编码级别有超快 极快 一般什么的 这个怎么选啊