栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java之jsp自定义标签与通用分页案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java之jsp自定义标签与通用分页案例

目录

一、jsp标签(下拉框、复选框、页码)

1、下拉框

2、复选框

3、页码

配置

二、通用分页

三、界面应用与展示


一、jsp标签(下拉框、复选框、页码)

1、下拉框
package com.cxy.tag;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.beanutils.PropertyUtils;




public class Select extends BodyTagSupport{
	private List items;
	private String textVal;
	private String textKey;
	private String headerTextVal;
	private String headerTextKey;
	private String selectedVal;
	private String id;
	private String name;
	
	
	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(toHTML());
		} catch ( Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return super.doStartTag();
	}
	
	private String toHTML() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException  {
		StringBuffer sb = new StringBuffer();
		sb.append("");
		return sb.toString();
	}


	public List getItems() {
		return items;
	}
	public void setItems(List items) {
		this.items = items;
	}
	public String getTextVal() {
		return textVal;
	}
	public void setTextVal(String textVal) {
		this.textVal = textVal;
	}
	public String getTextKey() {
		return textKey;
	}
	public void setTextKey(String textKey) {
		this.textKey = textKey;
	}
	public String getHeaderTextVal() {
		return headerTextVal;
	}
	public void setHeaderTextVal(String headerTextVal) {
		this.headerTextVal = headerTextVal;
	}
	public String getHeaderTextKey() {
		return headerTextKey;
	}
	public void setHeaderTextKey(String headerTextKey) {
		this.headerTextKey = headerTextKey;
	}
	public String getSelectedVal() {
		return selectedVal;
	}
	public void setSelectedVal(String selectedVal) {
		this.selectedVal = selectedVal;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public Select() {
		// TODO Auto-generated constructor stub
	}
	public Select(List items, String textVal, String textKey, String headerTextVal, String headerTextKey,
			String selectedVal, String id, String name) {
		super();
		this.items = items;
		this.textVal = textVal;
		this.textKey = textKey;
		this.headerTextVal = headerTextVal;
		this.headerTextKey = headerTextKey;
		this.selectedVal = selectedVal;
		this.id = id;
		this.name = name;
	}
	
	
	
	
}
 

2、复选框
package com.cxy.tag;

import java.lang.reflect.Field;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.beanutils.PropertyUtils;

public class CheckboxTag extends BodyTagSupport{


	private List items;
	private String cknr;
	private String ckval;
	private List cked;
	private String id;
	private String name;
	
	
	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(toHTML());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}

	
	
	
	private String toHTML() throws Exception {
		StringBuffer sb = new StringBuffer();
		for (Object obj : items) {
			//反射:
			Field ckvalField = obj.getClass().getDeclaredField(ckval);
			//打开权限
			ckvalField.setAccessible(true);
			//复选框展示值
			Object value = ckvalField.get(obj);
			
			//判断
			if(cked!=null) {
				if(cked.contains(value)) {
					sb.append(""+PropertyUtils.getProperty(obj, cknr));
				}
				else {
					sb.append(""+PropertyUtils.getProperty(obj, cknr));
				}
				
			}
			else {
				sb.append(""+PropertyUtils.getProperty(obj, cknr));
			}
			
		}

		
		return sb.toString();
	}




	public List getItems() {
		return items;
	}
	public void setItems(List items) {
		this.items = items;
	}
	public String getCknr() {
		return cknr;
	}
	public void setCknr(String cknr) {
		this.cknr = cknr;
	}
	public String getCkval() {
		return ckval;
	}
	public void setCkval(String ckval) {
		this.ckval = ckval;
	}
	public List getCked() {
		return cked;
	}
	public void setCked(List cked) {
		this.cked = cked;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public CheckboxTag() {
		// TODO Auto-generated constructor stub
	}

	public CheckboxTag(List items, String cknr, String ckval, List cked, String id, String name) {
		super();
		this.items = items;
		this.cknr = cknr;
		this.ckval = ckval;
		this.cked = cked;
		this.id = id;
		this.name = name;
	}
	
	
	
}
 

3、页码
package com.cxy.tag;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import com.cxy.tag.PageBean;

public class PageTag extends BodyTagSupport{
	
	private PageBean pagebean;

	public PageBean getPagebean() {
		return pagebean;
	}

	public void setPagebean(PageBean pagebean) {
		this.pagebean = pagebean;
	}

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(toHTML());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}

	private String toHTML() {
		StringBuffer sb = new StringBuffer();
		
		//隐藏的form表单,作用保存上一次查询条件
		sb.append("
"); sb.append(""); Map parameterMap = pagebean.getP(); if(parameterMap != null && parameterMap.size() >0) { Set> entrySet = parameterMap.entrySet(); for (Entry entry : entrySet) { String key = entry.getKey();//name/likes/page/rows String[] values = entry.getValue(); if(!"page".equals(key)) { for (String value: values) { sb.append(" "); } } } } sb.append(""); //分页条 sb.append("首页  "); sb.append("上一页  "); sb.append(""+pagebean.getPage()+""); sb.append("  下一页"); sb.append("  尾页"); sb.append("  到第页"); sb.append("  确定"); sb.append("  共"+pagebean.getTotal()+"条"); //分页js代码 sb.append(""); return sb.toString(); } }

配置



    
  JSTL 1.1 core library
  JSTL core
  1.1
  z
  http://jsp.veryedu.cn

  
    
        Provides core validation features for JSTL tags.
    
    
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    
  

  
  
    demo1
    
    com.cxy.tag.DemoTag
    
    JSP
    
    
        var
        
        false
        
        false
    
  
  
  
    if
    com.cxy.tag.IfTag
    JSP
    
        test
        true
        true
    
  
  
  
    set
    com.cxy.tag.SetTag
    JSP
    
        var
        true
        false
    
    
        value
        true
        false
    
  
  
   
    out
    com.cxy.tag.OutTag
    JSP
    
        value
        true
        true
    
  
    
  
 
  
    select
    com.cxy.tag.Select
    JSP
    
        items
        true
        true
    
    
        textVal
        true
        false
    
    
        textKey
        true
        false
    
    
        headerTextVal
        false
        false
    
    
        headerTextKey
        false
        false
    
    
        selectedVal
        false
        true
    
    
        id
        false
        false
    
    
        name
        false
        false
    
  
  
   
    page
    com.cxy.tag.PageTag
    JSP
    
        pagebean
        true
        true
    
  
  
  
    checked
    com.cxy.tag.CheckboxTag
    JSP
    
        items
        true
        true
    
    
        cknr
        true
        false
    
        
        ckval
        true
        false
    
        
        cked
        false
        true
    
        
        id
        false
        false
    
        
        name
        false
        false
    
  
  
  
  
  

二、通用分页

PageBean.java(页码参数)

package com.cxy.tag;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;


public class PageBean {

	private int page = 1;// 页码

	private int rows = 10;// 页大小

	private int total = 0;// 总记录数

	private boolean pagination = true;// 是否分页
	
	//新增变量
	private String url;//保存上一次的地址
	
	//保存上一次查询条件
	private Map p = new HashMap();
	
	//获取最大页码
	public int maxPage() {
		return this.total%this.rows==0?
				this.total/this.rows:
					this.total/this.rows+1;
	}
	
	

	//获取上一页的页码
	public int previousPage() {
		return this.page>1 ? this.page-1 : this.page;
	}
	//获取下一页的页码
	public int nextPage() {
		return this.page getP() {
		return p;
	}

	public void setP(Map p) {
		this.p = p;
	}
	
	public PageBean() {
		super();
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}

	public boolean isPagination() {
		return pagination;
	}

	public void setPagination(boolean pagination) {
		this.pagination = pagination;
	}

	
	public int getStartIndex() {
		return (this.page - 1) * this.rows;
	}

	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination
				+ ", url=" + url + ", p=" + p + "]";
	}
	

}

 StudentDao.java(dao方法)

package com.cxy.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.cxy.biz.StudentBiz;
import com.cxy.entity.Hobby;
import com.cxy.entity.Student;
import com.cxy.tag.PageBean;
import com.cxy.tag.StringUtils;
import com.cxy.util.DBHelper;


public class StudentDao extends BaseDaoimplements StudentBiz{
	Connection con = null;
	Statement stmt = null;
	ResultSet rs = null;
	PreparedStatement ps = null;
	
	
	@Override
	public int addstu(Student stu) {
		int n = 0;
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql ="insert into tb_stu(sname,tid,cid,hid) values(?,?,?,?)";
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//给占位符赋值
			ps = con.prepareStatement(sql);
			ps.setString(1, stu.getSname());
			ps.setInt(2, stu.getJs().getTid());
			ps.setInt(3, stu.getBj().getCid());
			ps.setString(4, stu.getHid());
			//获得影响行数
			n=ps.executeUpdate();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, ps);
		}
		return n;
	}
	
	@Override
	public int deletestu(int sid) {
		int n = 0;
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql ="delete from tb_stu where sid="+sid;
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得影响行数
			n = stmt.executeUpdate(sql);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, null, ps);
		}
		return n;
	}
	
	@Override
	public int updatestu(int sid, Student stu) {
		int n = 0;
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql ="update tb_stu set sname=?,tid=?,cid=?,hid=? where sid="+sid;
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//给占位符赋值
			ps = con.prepareStatement(sql);
			ps.setString(1, stu.getSname());
			ps.setInt(2, stu.getJs().getTid());
			ps.setInt(3, stu.getBj().getCid());
			ps.setString(4, stu.getHid());
			//获得影响行数
			n=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, null,ps);
			
		}
		return n;
	}
	
	
	@Override
	public int getcount(String strt,String strc,String strh) {
		int n=0;
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql = "SELECT count(*) from (rn" + 
					"SELECt * from (rn" + 
					"SELECt * from (rn" + 
					"SELECt a.*,b.tname,c.cname,d.hname from tb_stu a,tb_js b,tb_class c,tb_hobby d where a.tid=b.tid and a.cid=c.cid and a.hid=d.hid rn" + 
					")t "+strt+"rn" + 
					")c "+strc+"rn" + 
					")h "+strh+"rn"; 
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得结果集
			rs  = stmt.executeQuery(sql);
			//遍历
			if(rs.next()) {
				n=rs.getInt(1);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, ps);
		}
		return n;
	}
	@Override
	public Student getdg(int sid) {
		Student s =null;
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义sql语句
			String sql = "SELECt a.*,b.tname,c.cname,d.hname from tb_stu a,tb_js b,tb_class c,tb_hobby d where a.tid=b.tid and a.cid=c.cid and a.hid=d.hid and a.sid="+sid;
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得结果集
			rs = stmt.executeQuery(sql);
			if(rs.next()) {
				s = new Student();
				//编号
				s.setSid(rs.getInt(1));
				//姓名
				s.setSname(rs.getString(2));
				//教师
				s.setJs(new JsDao().getdg(rs.getInt(3)));
				//班级
				s.setBj(new ClassDao().getdg(rs.getInt(4)));
				//爱好
				String str = rs.getString(5);
				s.setHid(str);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, ps);
		}
		return s;
	}
	
	public List getAll(){
		List lh = new ArrayList();
		try {
			//创建连接
			con = DBHelper.getConnection();
			//定义sql语句
			String sql = "select * from tb_hobby";
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得结果集
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				Hobby h = new Hobby();
				h.setHid(rs.getInt(1));
				h.setHname(rs.getString(2));
				lh.add(h);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, null);
		}
		return lh;
		
	}
	public List getdAll() {
		List la = new ArrayList<>();
		Hobby h = new Hobby();
		try {
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql ="select * from tb_hobby";
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得结果集
			rs = stmt.executeQuery(sql);
			//遍历
			while(rs.next()) {
				h.setHid(rs.getInt(1));
				h.setHname(rs.getString(2));
				la.add(h);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, ps);
		}
		return la;
	}
	
	
	
	public Hobby getdgh(int hid) {
		Hobby h = new Hobby();
		try {
			con = DBHelper.getConnection();
			//定义SQL语句
			String sql ="select * from tb_hobby where hid="+hid;
			//获得执行对象
			stmt = con.prepareStatement(sql);
			//获得结果集
			rs = stmt.executeQuery(sql);
			//遍历
			if(rs.next()) {
				h.setHid(rs.getInt(1));
				h.setHname(rs.getString(2));
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.close(con, stmt, rs, ps);
		}
		return h;
	}
	
//	-----------------------------------------------------------------------------
	public List list(Student stu,PageBean p) throws Exception{
		String sql = "SELECt a.* from tb_stu a,tb_js b,tb_class c,tb_hobby d where a.tid=b.tid and a.cid=c.cid and a.hid=d.hid";
		int cid = stu.getBj().getCid();
		if(cid!=0) {
			sql+=" and a.cid ="+cid;
		}
		int tid =stu.getJs().getTid();
		if(tid!=0) {
			sql +=" and a.tid="+tid;
		}
		String hid = stu.getHid();
		if(StringUtils.isNotBlank(hid)) {
			sql +=" and a.hid like '%"+hid+"%'";
		}
		System.out.println("班级:"+cid+"教师:"+tid+"爱好:"+hid);
		return super.list(sql, p, rs ->{
			List list = new ArrayList<>();
			try {
				while(rs.next()) {
					String ah = rs.getString(5);
					String[] split = ah.split(" ");
					String ah1="";
					for (String hids : split) {
						//查询单个
						Hobby hh = getdgh(Integer.parseInt(hids));
						ah1+=hh.getHname()+" ";
					}
					list.add(new Student(rs.getInt(1), rs.getString(2),new JsDao().getdg(rs.getInt(3)), new ClassDao().getdg(rs.getInt(4)),ah1));
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return list;
		});
	}
	
}

三、界面应用与展示

IndexServlet.java

package com.cxy.servlet;

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

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

import com.cxy.biz.ClassBiz;
import com.cxy.biz.JsBiz;
import com.cxy.biz.StudentBiz;
import com.cxy.dao.ClassDao;
import com.cxy.dao.JsDao;
import com.cxy.dao.StudentDao;
import com.cxy.entity.Class;
import com.cxy.entity.Hobby;
import com.cxy.entity.Js;
import com.cxy.entity.Student;
import com.cxy.tag.PageBean;


@WebServlet("/index.do")
public class IndexServlt extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		//接收
		//教师
		String strt = request.getParameter("tid");
		if(strt==null) {
			strt="0";
		}
		
		//班级
		String strc = request.getParameter("cid");
		if(strc==null) {
			strc="0";
		}
		//爱好
		String[] str = request.getParameterValues("hid");
		System.out.println(str);
		String str2 ="";
		if(str==null) {
			str2="";
		}
		else {
			for (String string : str) {
				StudentDao s = new StudentDao();
				Hobby hh = s.getdgh(Integer.parseInt(string));
				str2+=hh.getHid()+" ";
			}
		}
		System.out.println("爱好"+str2);
		
		
		PageBean p = new PageBean();
		Student s = new Student();
		p.setReq(request);
		s.setJs(new JsDao().getdg(Integer.parseInt(strt)));
		s.setBj(new ClassDao().getdg(Integer.parseInt(strc)));
		s.setHid(str2);
		System.out.println("学生:"+s);
		
		StudentDao stu = new StudentDao();
        JsBiz j = new JsDao();
        ClassBiz c = new ClassDao();
		//教师
		List ls = j.getAll();
		//班级
		List lc = c.getAll();
		//爱好
		List ah1 = stu.getAll();
		
		List list =null;
		try {
			list = stu.list(s, p);
		} catch (Exception e) {
			e.printStackTrace();
		}
		request.setAttribute("list", list);
		request.setAttribute("pagebean", p);//页码
		request.setAttribute("js", ls);//教师
		request.setAttribute("bj", lc);//班级
		request.setAttribute("ha", ah1);//爱好
		request.getRequestDispatcher("/index.jsp").forward(request, response);
	}

}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://jsp.veryedu.cn" prefix="z" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




主界面


	
	
主界面
教员:     班级:     爱好:
学生编号 学生姓名 学生的教员 学生所在班级 学生爱好 操作
${t.sid } ${t.sname } ${t.js.tname } ${t.bj.cname } ${t.hid} 修改 删除

界面展示

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号