Jsp应用

保姆级教程:用UltraISO制作U盘,在旧电脑上安装ESXi 7.0搭建家庭实验室 本文提供了一份详细的保姆级教程,教你如何使用UltraISO制作U盘,在旧电脑上安装ESXi 7.0,搭建家庭虚拟化实验室。从硬件兼容性检查到软件工具准备,再到安装过程中的特殊处理和首次配置,手把手指导你完成整个部署过程。适合想要低成本学习VMware虚拟化技术的爱好者。 阅读详情


在这里插入图片描述

一、foreach标签应用

1.1 tag类

package com.xqx.tag;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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

/**
 * @author W许潜行
 *
 */
public class ForeachTag extends BodyTagSupport{

	//封装数据源,遍历数据
	private List<Object> items = new ArrayList<>();
	
	//封装对象指针:指向数据源中的对象
	private String var;
	public ForeachTag() {
		// TODO Auto-generated constructor stub
	}
	public List<Object> getItems() {
		return items;
	}

	public void setItems(List<Object> items) {
		this.items = items;
	}

	public String getVar() {
		return var;
	}
	public void setVar(String var) {
		this.var = var;
	}
	@Override
	public int doAfterBody() throws JspException {
		//获取迭代器
		Iterator<Object> it = (Iterator<Object>) pageContext.getAttribute("it");
		if(it.hasNext()) {
			//得到第一个迭代器对象保存到对象指针中
			pageContext.setAttribute(var, it.next());
			//保存迭代后的迭代器对象
			pageContext.setAttribute("it", it);
			return EVAL_BODY_AGAIN;
		}
		return SKIP_BODY;
	}
	@Override
	public int doStartTag() throws JspException {
		if(items==null||items.size()==0)
			return SKIP_BODY;
		//得到第一个迭代器对象
		Iterator<Object> it = items.iterator();
		//得到第一个迭代器对象保存到对象指针中
		pageContext.setAttribute(var, it.next());
		//保存迭代后的迭代器对象
		pageContext.setAttribute("it", it);
		return EVAL_BODY_INCLUDE;
	}
}

这个标签有三个属性:
“items”:需要遍历的集合对象。
“var”:迭代器指针指向的集合元素赋值变量名。
“body”:标签定义的标签体,其中可放置要循环执行的 JSP 代码块。

在 doStartTag() 方法中,首先判断集合对象是否为空,如果是则返回SKIP_BODY值,表示跳过标签体。如果非空,则获取迭代器对象,并将第一个迭代器对象赋值给对象指针,并将迭代器保存到 JSP 页面的 Attribute中,使其能够在后续方法中再次访问。

在 doAfterBody() 方法中,我们通过获取 Attribute中保存的迭代器对象,反复判断是否还有下一个元素。如果有,则将下一个元素赋值给对象指针,并将迭代器保存到 JSP 页面的 Attribute
中,以便在下一次迭代中使用。如果没有了,则返回 SKIP_BODY 值,表示跳过标签体。

1.2 tid

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    
  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>c</short-name>
  <uri>http://jsp.xqx.cn</uri>
  <tag>
    <name>foreach</name>
    <tag-class>com.xqx.tag.ForeachTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>items</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
        <name>var</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>Goods</name>
    <tag-class>com.xqx.tag.GoodsTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>var</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>select</name>
    <tag-class>com.xqx.tag.SelectTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>items</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
        <name>optionVal</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>optionText</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
</taglib>

在这个标签库描述文件中,定义了对应标签的名称、实现类和属性。其中, 元素用于定义标签属性,包括名称、是否必需、是否支持表达式等。 元素用于指定标签体中可放置的内容类型。

1.3 jsp

<%@page import="com.xqx.tag.Goods"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri = "http://jsp.xqx.cn" prefix = "x" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!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>
<%   
	List<Goods> list = new ArrayList();
	list.add(new Goods(1,"汽车"));
	list.add(new Goods(2,"飞机"));
	list.add(new Goods(3,"轮船"));
	request.setAttribute("list", list);
%>
<p>这是c标签的foreach
<c:forEach items = "${list }" var = "l">
		${l.id }:${l.type } <hr/>
</c:forEach>
<h1>这是自定义标签的foreach</h1>
<x:foreach items="${list }" var="l">
		${l.id }:${l.type } <hr/>
</x:foreach>
<x:Goods var="goods">

</x:Goods>
交通商品1:${goods }
</body>
</html>

首先在 JSP 页面中定义了一个商品列表集合对象,然后将其保存到请求属性中。

之后使用了两个循环遍历集合对象并将其中的元素逐个显示出来
其中一个是使用 JSTL 标签库中的 <c:forEach>
标签,另一个则是使用自定义标签库中的 <x:foreach> 标签。

二、数据标签

2.1tag类

package com.xqx.tag;

import java.util.ArrayList;
import java.util.List;

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

/**
 * @author W许潜行
 *
 */
public class GoodsTag extends BodyTagSupport{

	//封装一个保存数据的变量
	private String var;

	
	public String getVar() {
		return var;
	}


	public void setVar(String var) {
		this.var = var;
	}


	@Override
	public int doStartTag() throws JspException {
		//模拟数据库传来的数据
		List<Goods> list = new ArrayList<>();
		list.add(new Goods(1,"汽车"));
		list.add(new Goods(2,"飞机"));
		list.add(new Goods(3,"轮船"));
		//将数据保存到封装的变量中
		pageContext.setAttribute(var, list);
		return SKIP_BODY;
	}
}

定义了一个变量var,用于保存商品列表,并提供了对该变量的getter和setter方法。

在doStartTag方法中,模拟了一个数据库返回商品列表的场景,并将该列表保存在了封装变量var中。在JSP页面中,通过调用该标签即可获取到商品列表,方便进行商品展示。

2.2jsp页面的调用

<x:Goods var="goods">

</x:Goods>
交通商品1:${goods }
</body>
</html>

其他页面也可以调用

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri = "http://jsp.xqx.cn" prefix = "x" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!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>
<x:Goods var="goods">

</x:Goods>
交通商品2${goods }
</body>
</html>
开发JSP应用程序 TecknoSoft Pvt Ltd.公司的首席技术官(CTO)John Barrett将创建一个应用程序的任务委托给了开发团队,该应用程序应在客户访问其账户详细信息前验证其客户ID和密码。客户ID应是数字形式。John希望如果所输入的客户ID或密码不正确,应向客户显示错误消息。在修改整个应用程序之前,John希望通过为某个客户创建一个示例应用程序来测试此功能。实现此功能的任务分配给了程序员Larry Williams。Larry决定用JSP开发此应用程序。 阅读详情

相关推荐

JSP Web应用开发实战指南

本文还有配套的精品资源,点击获取 简介:本书旨在帮助开发者学习和掌握Java Server Pages(JSP)技术,为开发动态Web应用程序提供实践指导。涵盖了JSP的基础知识、内置对象、与Servlet的协同工作、以及JSTL和EL的使用,还提供了数据库交互和框架集成的示例,最后指导如何部署和调试Web应用。 1. JSP基础知识和基本语法 在本章中,我...

weixin_32098457的博客 798

JSPforEach标签

forEach标签有6个属性,分别是:items,var、begin、end、step、varStatus

weixin_44855573的博客 8647

JSP技术深入解析与应用

本文还有配套的精品资源,点击获取 简介:JSP是一种用于开发动态Web应用程序的Java技术,它将Java代码与HTML等标记语言结合,简化了动态网站的开发流程。本文详细介绍了JSP的基本概念、组成部分、内置对象、与Servlet的关系、动作标签以及EL和JSTL的使用。深入学习JSP可助力开发者构建高效的企业级应用。 1. JSP简介与基本概念 1.1 JSP...

weixin_33816734的博客 1300

JSP迭代标签forEach循环标签 基本使用讲解

var 定义变量值 还是 i 然后 i = 1 条件 i 小于等于 10 每次 i + 2 然后中间用EL表达式输出 这个 i i的值。我们定义 遍历是数据为 arryList 然后 var 我们设置当前值代理名叫 item。items 就是 我们要循环的数据 注意 这里 操作的也是域对象中的值。i++ 中的x 结束值。第一种 就想 我们的for循环一样的 参考代码如下。var 就是现域变量名 就相当于循环中的 i。好 之前我们讲完了 我们的条件动作标签

weixin_45966674的博客 2570

jsp】c:forEach用法

先介绍一下语法 语法: <c:forEach var="name" items="Collection" varStatus="statusName" begin="begin" end="end" step="step"></c:forEach> 该标签根据循环条件遍历集合 Collection 中的元素。 var 用于存储从集合中取出的元素;items 指定要遍历的集合;varStatus 用于存放集合中元素的信息 上面这个语法,对于没有使用过的人来说,基本无效,那么,翻译成白

weixin_45156425的博客 5868

jsp标签foreach标签

步骤 ①编写助手类 ②编写标签库描述标签(tld) ③在页面上引入标签使用 1、foreach标签 编写助手类 我们先设置属性这里我们需要了解在foreach中有两个值分别为与要遍历的集合和它对应的键 package com.zking.je09.tagdemo.tag; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.tagext.BodyTagSupport; public

m0_61754040的博客 1010

JSP应用

JSP 1、JSP简介 jsp全称Java Server Page, 一种动态网页开发技术。它允许使用el表达式、jstl来获取Java代码中的数据,同时允许在jsp中编写html代码,使得jsp可以非常容易的显示页面。Jsp本质是Servlet,最终以Servlet方式运行,所以可以说Jsp是一种特殊的Servlet。 2、JSP组成结构 2.1、静态内容 html静态文本 2.2、注释 第1种: <!-- HTML注释 --> 第2种: <%-- JSP注释 --%&gt

Jungleforward的博客 539

JSP之自己构建WEB应用

自己构建Web应用 1.创建一个webDemo的文件夹 2.在webDemo文件夹下创建WEB-INF文件夹 3.在其他web应用中找到web.xml文件(只保留最原始的部分),将web.xml文件放到WEB-INF文件夹下 4.在WEB-INF下创建lib和classes文件夹 这已经是一个空的web应用,将webDemo放到Tomcat服务器的webapps路径下. 在webDem

baidu_36950311的博客 459

JSP应用的安全问题

一、概述 当网络编程越来越方便,系统功能越来越强大,安全性却指数倍地下降。这恐怕就是网络编程的不幸和悲哀了。各种动态内容生成环境繁荣了WWW,它们的设计目标就是为了给开发者更多的力量,给最终用户更多的方便。正因为如此,系统设计师和开发者必须明确地把安全问题作为一个考虑因素,事后追悔很难奏效。 从安全的角度来看,服务器端WWW应用的弱点来源于各种各样的交互能力和传输通道。它们是攻击者直接

FreeXploiT 2051

2.《JSP应用开发案例教程》第1章 JSP概述

第1章 JSP概述 1.1 JSP简介 (1)JSPJava Server Page是一种动态网页技术标准,是Java Web应用开发的主要技术之一,也是目前Web应用开发的主流技术之一。 (2)JSP类似于ASP、PHP,可在HTML文档(*.html、*.htm)中插入Java脚本小程序(Scriptlet)和JSP标记(tag)等元素,从而形成JSP文件(.jsp)。 (3)用JSP开发的应用是跨平台的,可在Windows/Linux/Unix等操作系统上运行。 (4)早期的Web应用是基于CGI(

qwsn 1万+

Jsp开发wap应用

Jsp开发Wap应用最近由于需要学习Wap,经过几天的摸索,掌握了开发的方法.一、开发环境Netbeans 5.0发行版web应用程序对提供了更加友好的支持,创建页面,运行,打包都很方便.故选用了Netbeans作为开发工具.wap模拟器:WinWap3.0和Opera8.0测试通过  一、用Jsp实现Wap应用程序设计主要思路:用javaServlet/j

wangwang1231的专栏 1413

JSP基本应用

JSP基本应用

weixin_44119864的博客 652

JavaBean在JSP中的应用

一、JavaBean简介 JavaBean是一种特殊的Java类,它遵从一定的设计模式, 开发工具和其他组件可以根据这种模式来调用JavaBean。 JSP中使用的JavaBean非常简单,这种简单JavaBean的设计,具有如下两个特点: (1)用作JavaBean的类必须具有一个公共的、无参数的构造方法, 这个方法可以是通过编译器自动产生的那个默认构造...

GoslingBoy的专栏 1934

jspjavabean的应用

也许每天真的就是一个新的开始..昨天为了一个javabean忙了一天..不过问题还是解决了哈.今天颇有成就感于是决定将心得写下来和大家共享了..首先我们看看一个简单的javabean类吧UserInfo.javapackage  com.lili;public class UserInfo{    public UserInfo(){}    public UserInfo(String name

圣手屠鸭的专栏 1226

jquery 在 jsp 中的应用

 jquery  在 jsp 中的应用 源代码 和 演示jquery 在 php 中使用的例子很多,但是没有 jsp 的,我修改了ajax  on java 中的第三章的例子,应用了jquery实现了ajax源代码 下载地址:http://www.esnips.com/doc/386d5670-9f54-4afb-a8da-67d89b1155ab/jqueryjsp2007040

zhngling的专栏 1503

jsp Session应用

实验一: 编写两个JSP页面inputString.jsp和computer.jsp,用户可以使用inputString.jsp 提供表单的输入一个字符串,并提交给computer.jsp页面,该页面通过内置对象获取inputString.jsp页面提交的字符串,计算并显示该字符串的长度。 inputString.jsp <%@ page language="java" conten...

telelily的博客 520

JSP技术及应用

JSP技术及应用 实验预习内容 JSP语法元素有哪些?使用时应注意什么问题? 答:JSP语法元素有JSP脚本元素、JSP指令、JSP动作、表达式语言、JSP注释五种。使用时应注意每一种JSP语法元素都具有严格定义的语法。 JSP页面的生命周期包括哪几个阶段? 答:1.转换阶段2.编译阶段3.类的加载和实例化4.调用jspInit() 5.调用_jspService() 6.调用jspDestroy()。 JSP指令和动作有哪些?有什么区别? 答:JSP指令:page指令、include指令、taglib指

Mycat的博客 1677
上一篇: Jsp页面
下一篇: 通用分页详细讲解(后端)
许潜行
博客等级 码龄4年 296粉丝 75原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值