通用分页之自定义标签控制前台显示

简单易用的自定义标签分页显示 简单,简易使用 package auvtech; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class PageTag extends TagSupport { private String name="page"; private String action; private int measurement; public void setName(String name) { this.name = name; } public void setAction(String action) { this.action = action; } public void setMeasurement(int measurement) { this.measurement = measurement; } @Override public int doStartTag() throws JspException { try{ JspWriter out = pageContext.getOut(); Pageination page=(Pageination)pageContext.getSession().getAttribute(name); //在page中只有3个属性是已知的,1,一共多少记录,2,一页显示多少记录,3,以及返回的结果集 //1.重新给page分布内容 setPage(page); //2.输出html out.print(getHtml(page)); //3.输出js out.print(getJs(page)); }catch(IOException ioException){ throw new JspException(ioException.getMessage() ); } return(SKIP_BODY); } private void setPage(Pageination page){ if (page.getMaxNoteNum() != 0) { // 一共多少页 if (page.getOnePageMaxNum() != 0&&page.getMaxNoteNum() % page.getOnePageMaxNum() == 0) { page.setMaxPageNum(page.getMaxNoteNum() / page.getOnePageMaxNum()); } else if(page.getOnePageMaxNum()!= 0){ page.setMaxPageNum(page.getMaxNoteNum() / page.getOnePageMaxNum() + 1); } }else { page.setMaxPageNum(0); } //设置当前页记录数目 if(page.getResultList()!= null) page.setCurrentPageNoteNum(page.resultList.size()); else page.setCurrentPageNoteNum(0); } //生成html代码 private String getHtml(Pageination page){ StringBuffer sb = new StringBuffer(); //添加一个尺寸框 sb.append("量度米尺:"); sb.append("<input text='text' id='onePageMaxNum' name='onePageMaxNum' size='2' value='"+page.getOnePageMaxNum()+"'/>"); sb.append("[ 总发信息 ]: " + page.getMaxNoteNum() + "条 ,当前是:第" + page.getCurrentPage() + " 页 / 共 " + page.getMaxPageNum() + "页 本页 " + page.getCurrentPageNoteNum() + " 条"); //首页,上一页,下一页,尾页 if(page.getCurrentPage()>1) sb.append(" <a onclick='firstPage();' style='cursor:pointer'>首页</a>"); else sb.append("首页"); if(page.getCurrentPage()>1) sb.append(" <a onclick='previousPage();' style='cursor:pointer'>上一页</a>"); else sb.append("上一页"); if(page.getCurrentPage()<page.getMaxPageNum()) sb.append(" <a onclick='nextPage();' style='cursor:pointer'>下一页</a>"); else sb.append("下一页"); if(page.getCurrentPage()<page.getMaxPageNum()) sb.append(" <a onclick='lastPage();' style='cursor:pointer'>尾页</a>"); else sb.append("尾页"); //跳转 sb.append(" 跳转到:<select name='goToPage' onchange='javascript:goPage(this.value)'>"); for (int i = 1; i <= page.getMaxPageNum(); i++) { sb.append("<option value=").append(i); if ( i == page.getCurrentPage()){ sb.append(" selected"); } sb.append(">第").append(i).append("页</option>"); } sb.append("</select>"); return sb.toString(); } //生成js代码 private String getJs(Pageination page){ StringBuffer sb=new StringBuffer(); sb.append("<script language=javascript>"); //跳转事件 sb.append("function goPage(cpage){").append("window.location='").append(action); sb.append("?currentPageNum='+").append("cpage"); sb.append("+'&onePageMaxNum='+").append("getMaxNum()"); sb.append(";}"); //得到分页米尺数值 sb.append("function getMaxNum(){"); sb.append("var val=document.getElementById('onePageMaxNum').value;"); sb.append("if(val=='') return "+measurement+";"); sb.append(" return document.getElementById('onePageMaxNum').value"); sb.append(";}\n"); //首页 sb.append("function firstPage(){"); sb.append("var loca='"+action+"?currentPageNum="+1+"&onePageMaxNum='+getMaxNum();"); sb.append("window.location.href=loca;"); sb.append("}\n"); //上一页 sb.append("function previousPage(){"); sb.append("var loca='"+action+"?currentPageNum="+(page.getCurrentPage()-1)+"&onePageMaxNum='+getMaxNum();"); sb.append("window.location.href=loca;"); sb.append("}"); //下一页 sb.append("function nextPage(){"); sb.append("var loca='"+action+"?currentPageNum="+(page.getCurrentPage()+1)+"&onePageMaxNum='+getMaxNum();"); sb.append("window.location.href=loca;"); sb.append("}\n"); //尾页 sb.append("function lastPage(){"); sb.append("var loca='"+action+"?currentPageNum="+page.getMaxPageNum()+"&onePageMaxNum='+getMaxNum();"); sb.append("window.location.href=loca;"); sb.append("}\n"); sb.append("</script>"); return sb.toString(); } } 立即下载

通用分页之自定义标签控制前台显示

前言

通用分页的后台代码在之前的代码中啊:
这里是通用分页后台代码的传送门哦┗( ▔, ▔ )┛
还有详细介绍自定义标签的博客:
|ू・ω・` )自定义标签的详解诶
为什么使用自定义标签是因为通用分页本意是为了节省代码,增加代码的重用性,而自定义标签也是一样的为了增强代码的简洁性和可读性所以使用自定义标签
之前的博客有讲过自定义标签的开发步骤和生命周期这期咱就不讲的太复杂了熬。

效果图

在这里插入图片描述
自定义标签做出上面画出的做分页的换页跳转

代码分析

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="z" uri="/zengjing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test="${empty recruitment }">
	<jsp:forward page="recruitment.action"></jsp:forward>
</c:if>
	<form action="recruitment.action" method="post">
		<input name="name" value="${name }" />
		<input type="submit" value="查询" />
	</form>
	<table border="1px" width="100%" >
		<tr>
			<td align="center">职位</td>
			<td align="center">公司</td>
			<td align="center">工作地址</td>
			<td align="center">薪资</td>
			<td align="center">学历要求</td>
			<td align="center">爬取时间</td>
			<td align="center">查看详情</td>
		</tr>
		<c:forEach items="${recruitment}" var="r" >
			<tr>
			<td align="center">${r.job}</td>
			<td align="center">${r.company }</td>
			<td align="center">${r.address }</td>
			<td align="center">${r.salary }</td>
			<td align="center">${r.limit }</td>
			<td align="center">${r.time }</td>
			<td align="center">
				<a href="details.do?id=${r.id}">查看详情</a>
			</td>
		</tr>
		</c:forEach>
	</table>
	 <z:page pageBean="${pageBean }"></z:page> 
	 <a href="add.jsp">增加</a>
</body>
</html>

可以看到我这只放了一个自定义标签,因为我把写换页按钮的那一行功能的代码放在了标签里面封起来了,再看看助手类:

package com.zengjing.tag;

import java.lang.reflect.InvocationTargetException;
import java.util.Map;

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

import com.zengjing.util.PageBean;

public class PageTag extends BodyTagSupport{

	private static final long serialVersionUID = 6677030782477028008L;

	private PageBean pageBean;

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	
	@Override
 	public int doStartTag() throws JspException {
		try {
			JspWriter out=this.pageContext.getOut();
			out.println(toHtml());
			return SKIP_BODY;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		
	}
	
	public String toHtml() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		StringBuffer sb=new StringBuffer();
		
		//分页按钮
		sb.append("<div style='text-align:center;font-size:18px;'>\r\n" + 
				"	当前第"+pageBean.getPage()+"页  &nbsp;共"+pageBean.getMaxPage()+"页   &nbsp; 共"+pageBean.getTotal()+"条  &nbsp;\r\n" + 
				"	<a href='javascript:doForward(1)'>首页</a>  &nbsp;\r\n" + 
				"	<a href='javascript:doForward("+pageBean.getPerviousPage()+")'>上一页</a>  &nbsp;\r\n" + 
				"	<a href='javascript:doForward("+pageBean.nextPage()+")'>下一页</a>  &nbsp;\r\n" + 
				"	<a href='javascript:doForward("+pageBean.getMaxPage()+")'>尾页</a>\r\n" + 
				"	<input id='numTxt' type='text' style='width:50px;' />\r\n" + 
				"	<a href='javascript:doSkip()'>GO</a>\r\n" + 
				"</div>");
		//隐藏域表单 专门用来传递数据
		sb.append("<form id='pageForm' action='"+this.pageBean.getUrl()+"' method='post' >");
		//System.out.println(this.pageBean.getUrl());
		sb.append("<input type='hidden' name='page' />");
		//从map集合获取参数
		Map<String, String[]> map= pageBean.getMap();
		//遍历集合
		for(Map.Entry<String, String[]> entry:map.entrySet()) {
			String name=entry.getKey();
			String[] value=entry.getValue();
			if("page".equals(name)) {
				continue;//退出循环进去下一个循环
			}
			//遍历数组
			for(int i=0;i<value.length;i++) {
				sb.append("<input='hidden' name='"+name+"' value='"+value[i]+"' />");
			}
		}
		
		sb.append("</form>");
		if(null==pageBean||!pageBean.isPagination()) {
			return sb.toString();
		}
		System.out.println(111);
		//动态拼接js
		sb.append("<script type=\"text/javascript\">\r\n" + 
				"	function doForward(page){\r\n" + 
				"		var f=document.getElementById('pageForm');\r\n" + 
				"		f.page.value=page;\r\n" + 
				"		f.submit();\r\n" + 
				"	}\r\n" + 
				"	\r\n" + 
				"	function doSkip(){\r\n" + 
				"		var num=document.getElementById('numTxt').value;\r\n" + 
				"		if(!num||isNaN(num)||!/^[0-9]+$/.test(num)||parseInt(num)<=0||parseInt(num)>"+pageBean.getMaxPage()+"){\r\n" + 
				"			alert(\"请输入1~"+pageBean.getMaxPage()+"之间的整数\")\r\n" + 
				"		}else{\r\n" + 
				"			doForward(num);\r\n" + 
				"		}\r\n" + 
				"	}\r\n" + 
				"</script>");
		return sb.toString();
	}
	
}

我说了嘛,我把前端的代码封在了标签里面,这个助手类里就有两个主要的方法doStartTag和toHTML方法,doStartTag里是输出toHTML的方法返回的值,toHtml方法就返回的是一个拼接的字符串,拼接的内容就是前端代码,拼接最好是写好了代码再copy到这边拼接,不然很容易出错哦。
再看看tld文件:

<tag>
		<!-- 标签名 -->
		<name>page</name>
		<tag-class>com.zengjing.tag.PageTag</tag-class>
		<body-content>empty</body-content>
		<attribute>
			<name>pageBean</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>

分页按钮有一个属性就是pageBean,必填可为表达式,在jsp页面头部导入taglib标签:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="z" uri="/zengjing" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>

最后就可以出现和上方效果图一样的效果啦!

总结

敲代码真的还是需要细节和耐心,拼接的那个地方一不小心就很容易有错误然后没有效果,通用分页到这里完美结束啦拜拜!

Python逆向爬取Tik Tok,MsToken,X-Bogus以及signature tiktok作为字节海外的自媒体平台,具有很非常大的价值,本文旨在教会大家实现Tik Tok的签名获取以及数据的最终爬取。 阅读详情

相关推荐

新手必看:如何用T265和ROS实现无人机室内精准定位(附PX4参数配置)

本文详细介绍了如何使用Intel Realsense T265和ROS实现无人机室内精准定位,包括硬件准备、ROS数据流架构设计、PX4参数配置及系统验证。特别针对视觉SLAM技术在室内环境中的应用,提供了从零搭建到进阶优化的全流程解析,适合无人机开发新手快速上手。

weixin_30642561的博客 404

自定义标签库完成分页功能

分页标签的使用 1.commons.tld(自定义文件,名字无所谓) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-j...

weixin_44804206的博客 615

使用TMS320F28335控制四位共阳数码管

简要阐述利用F28335控制四位共阳数码管的整个过程,包括原理、思路、部分代码以及调试过程。

liujunhaozuishuai的博客 2658

用自定义标签实现分页

我们先分析一下分页标签的需求:如下图: 附件: 您所在的用户组无法下载或查看附件如果我们要写出分页标签,最少我们要有三个变量,curPage//当前页 --也就是说现在用户正在浏览第几页.total //总记录数 -- 我们从数据库得到的总记录数PAGE_SIZE//页大小 --也就是说每页我们用来显示多少数据,这一般是常量,有时在Servlet指定,有时在properties文件里读取.

翔的窝窝 752

CS231n+assignment2(一)

cs231n作业二详解+代码

qq_56551150的博客 2411

mjlab & MimicKit 宇树 G1 人形机器人强化学习训练部署

基于mjlab框架训练Unitree G1人形机器人执行双旋踢的示例。参考动作源自Jason Peng的MimicKit项目。数据转换脚本(MimicKit pkl → mjlab csv)完整训练结果与超参数预训练ONNX检查点用于部署实体硬件部署指南⚠️ 免责声明仅用于教育目的。对于因尝试复现此处展示结果而导致的财产损失或人身伤害,我们概不负责。操作硬件时请谨慎行事并保持良好判断力。

2506_90492529的博客 1700

关于destoon后台添加自定义功能+前台展示标签调用方法

今天没事,继续更新关于destoon方面知识技巧,今天给大家介绍关于destoon后台添加字段,如何在前台调用?想必大多数人都需要,所以今天给大家说说。 后台系统存放位置,一共有三个: 第一个为根目录下:config.inc.php (核心配置文件) 第二个为数据表:destoon_setting(主要是其他模块配置) 第三个存放位置:/file/cache...

积善之家 1108

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

丨汀、的博客 656

通用分页2

通用分页2(通用分页1是后台页面) 上次的通用分页已经把查询结果显示在后台(控制台)上了,而今天就是把其显示到前台(网页上) 首先,上次的代码不变,现在我们去写一个jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ta...

weixin_43977846的博客 138

YOLOv8 PCB缺陷检测系统全流程实战:从开发到UI展示详解

毕设路上难免有波折,但只要跟着这个教程把“数据集处理、模型训练、UI开发”每一步都落实,你就已经超越了大多数同学。这个“PCB缺陷检测系统”既有技术深度(YOLOv8是工业级主流算法),又有工程价值(解决电子制造的实际痛点),还具备出色的可视化展示——这样的毕设,拿高分是水到渠成的事。

FJN110的博客 214

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线

通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨

XiaoqiangClub的博客 869

通用分页(二)

通用分页(二) 由通用分页(一)可知 可知 我们把后台的数据全部都展现到了后台的控制台上,让它可以经行分页的一个展示 下面是我们需要写的类 PageBean BookServlet PageTag bookList 而今天的内容 就是把后台的数据展示再前台,让他可以经行 上一页,下一页, 末页,首页, 查询章节和查询页码 的一个展示 思路 1、 对pagebean增强(添加url、paramMap...

what_to的博客 121

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

J2EE之通用分页

通用后台分页 1.简单的查询功能 编码:Connection建立连接 preparestatement获得预编译对象 执行查询 ResultSet结果集处理 不足之处: 完全重复的代码:Connection建立连接 preparestatement获得预编译对象 执行查询 重复的思路:结果集处理 2.通...

小宝的宝呢的博客 433

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jsp——通用分页——2

文章目录ui类servletpageBean分页标签 大家好,在上一篇的博客里,写了通用分页的基本后台代码,这一篇主要写的是前台的代码。 ui类 首先,第一步写的是页面展示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@tagli...

大屌的博客 313

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

自定义MVC框架

一,思维导图 二,自定义MVC 1.什么是MVC? MVC:①模型层(Model)用来封装 ② 视图层(view)用来显示 ③控制层(controller) 用来接受浏览器请求来处理的 2.以前代码的不足: 1数据处理dao 代码思路基本重复 2servlet 代码思路基本重复 ①doget/dopost,实际上doget基本用不上 ...

m0_52681702的博客 281

自定义MVC

一。思维导图 二。自定义MVC 1.什么是MVC? MVC:①模型层(Model)用来封装 ② 视图层(view)用来显示 ③控制层(controller)用 来接受浏览器请求来处理的 2.以前代码的不足: 1数据处理dao 代码思路基本重复 2servlet 代码思路基本重复 ①doget/dopost,实际上doget基本用不上 ②实体类参数接受代码冗余(如:req...

m0_54546762的博客 154

基于Spring Boot与内容推荐算法的手工编织非遗平台设计

在Web应用开发中,前后端分离架构已成为主流实践。本文围绕Spring Boot与内容推荐算法,讲解如何构建一个手工编织非遗展示与个性化推荐平台。文章从系统数据流设计切入,梳理用户、作品、行为日志等核心表结构,进而分析基于用户浏览和收藏行为的偏好提取方法,通过分类、材质、地区等标签计算作品相似度,实现“猜你喜欢”推荐功能。同时,结合权限控制、图片上传、分页检索等工程细节,给出前后端联调与部署要点,并针对行为数据稀疏时推荐降级的容错策略加以说明。本方案兼具功能完整性和技术研究点,适合作为毕业设计或全栈实践参考

weixin_34284188的博客 393

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 400

(原创)后台动态设置前台标签内容和属性

和以前的asp不同,在asp.net中为了彻底的代码分离,我们一般不采用嵌入标签中来设置一些属性和内容。一般来说有2种情况:(一)设置标签的内容,比如这里(二)设置标签的属性,比如(三)动态加载一些script先看一下(一)和(二):前台后台protected HtmlGenericControl mytitle;protected HtmlGenericControl mybody;this.m

2420

通过设置标签class值控制标签的显示与隐藏

        需求背景如下: 原项目居民、单位、计量三模块共用一个jsp文件,显示的页面也顺理成章的统一了,幸亏没有调用同一个js,在此基础上要求居民和单位计量的分离,即居民的显示居民的相关信息,单位和计量的显示相同的信息,时间久远,仅有的未修改前的页面截图如下(红框内字段已替换成红字):          需求分析: (1)项目中添加字段并实现增删改查功能    (2)页面的展示,...

weixin_33755649的博客 1911

将分页功能写入自定义的标签

1.PageModel的实体类; package org.fkit.hrm.util.tag; import //存储常量的类 org.fkit.hrm.util.common.HrmConstants; /** * 分页实体 */ public class PageModel { /** 分页总数据条数 */ private int recordCount; /**

qq_39133616的博客 524

jsp自定义分页标签page

            日常工作项目里,分页是十分常见的,网上也有大把的分页插件,性能和美观程度都比较不错,但是有时候并不一定能满足我们的需求,因为大部分的分页插件都是在客户端分页,有的甚至需要你一次性查询出所有的数据放入内存,在内存进行分页,而且分也时,只是单纯分页只接受页码,并不能传入本页的某些参数到另一个页面做重新查询的条件,进而重新分页。                      ...

phantomes的专栏 607

jsp自定义标签

一,为什么要学习jsp自定义标签? 在JAVA项目开发中,JSP自定义标签,可以使前端的展现简洁与方便 二,自定义标签的开发及使用步骤 1.创建一个标签助手类(继承BodyTagSupport) 2.创建标签库描述文件(tld),添加自定义标签的配置 3.在JSP通过taglib指令导入标签库,并通过指定后缀访问自定义标签 4.架包 5.在jsp页面头部通过taglib标签导入tld文件 三,jsp自定义生命周...

m0_46890027的博客 322

jsp自定义标签02(案例)

jsp自定义标签(案例)前言1、自定义标签开发步骤2、实战自定义标签(set ,out,if,foreach,select)2.1自定义set标签2.2 自定义out标签2.3 自定义if标签2.3 自定义foreach标签 前言 在本人上一篇博客中写了jsp自定义标签的概念,已经认识了自定义标签,这次我们来动手实战 链接: jsp自定义标签01. 1、自定义标签开发步骤 第一步:助手类 第二步:.tld文件 第三步:jsp界面引用标签,taglib 2、实战自定义标签(set ,out,if,foreac

men_ma的博客 579
上一篇: 基于Mysql的通用分页
下一篇: 自定义MVC框架概念以及案例(一)
Jiang呀
博客等级 码龄7年 16粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值