javaee之标签的运用

在javaee中,需要了解的还有其丰富的核心标签库,包括c标签、struts标签....

现在先来了解标签的底层机制:

package gz.itcast.tags.cases;

import java.io.IOException;

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

//自定义的标签需要继承SimpleTagSupport接口,并且实现doTag()方法
public class WhenTag extends SimpleTagSupport{
	private boolean test;
	public void setTest(boolean test) {
		this.test = test;
	}


	@Override
	public void doTag() throws JspException, IOException {
		//根据test的值判断是否显示标签内容
		
		if(test){
			//通过getJspBody()在自定义标签内写出数据
			this.getJspBody().invoke(null);
		}
		
		//得到父标签对象
		ChooseTag parent = (ChooseTag)this.getParent();
		parent.setFlag(test);
		
	}
}

package gz.itcast.tags.cases;

import java.io.IOException;

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

//登录UI界面的标签
public class LoginUITag extends SimpleTagSupport{
	private String name;
	private String password;
	
	//用于给属性赋值的
	public void setName(String name) {
		this.name = name;
	}
	public void setPassword(String password) {
		this.password = password;
	}


	@Override
	public void doTag() throws JspException, IOException {
		
		String html = "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "";
		html += "
用户名
密码
";
		//通过getJspContext()方法可以得到PageContext对象,并可以得到其他的对象和方法
		this.getJspContext().getOut().write(html);
	}
}

除了定义完doTag方法以后,还需要在web-inf的目录下创建一个.tld文件,该文件是一个自定义标签的配置文件,每一个自定义的标签都需要在该文件进行配置才能使用,如下就是tld文件的具体配置








  
  1.0
  
  1.2
  
  itcast
  
  http://www.itcast.cn

  
  
  	
    showip
    
    gz.itcast.tags.ShowIPTag
    
    scriptless
  

	
		demo1
		gz.itcast.tags.Demo1Tag
		scriptless
	
	
	
		demo2
		gz.itcast.tags.Demo2Tag
		scriptless
	

	
		demo3
		gz.itcast.tags.Demo3Tag
		scriptless
		
		
			num
			
			false
			
			true
		
	
	
	
	
		demo4
		gz.itcast.tags.Demo4Tag
		scriptless
	
	
	
	
		loginUI
		gz.itcast.tags.cases.LoginUITag
		scriptless
		
			name
			true
			false
		
		
			password
			true
			false
		
	
	
	
	
		if
		gz.itcast.tags.cases.IfTag
		scriptless
		
			test
			true
			true
		
	
	
	
		when
		gz.itcast.tags.cases.WhenTag
		scriptless
		
			test
			true
			true
		
	
	
	
		otherwise
		gz.itcast.tags.cases.OtherwiseTag
		scriptless
	
	
	
		choose
		gz.itcast.tags.cases.ChooseTag
		scriptless
	
	
	
		forEach
		gz.itcast.tags.cases.ForEachTag
		scriptless
		
			items
			true
			true
		
		
			var
			true
			false
		
	




javaee自带的标签c标签,使用c标签需要导入该标签的uri

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>    //这个是导入的标签的地址


  
    核心标签库
    
	
	
	
	

  
  
  
  <%--数据操作: --%>
  
  <%--c:set :保存数据到域对象中
  	page: 默认  pageContext
  	request: 
  	session
  	application
  --%>
  
  <%-- --%>
  <%--
  	pageContext.setAttribute("name","狗娃");
   --%>
  
  ${name}
  
  
<%-- c:out: 从域对象中取出数据 default: 默认值,当没有数据时生效 escapeXml: 是否需要对其内容进行转义 --%>
<%-- 条件判断 --%> <%--c:if --%> 是否被显示 <%--c:choose + c:when + c:othwise --%> 没有登录 登录成功了
<%--循环 --%> <%--c:forEach:循环集合或者数组 --%> <% List list = new ArrayList(); list.add("eric"); list.add("rose"); list.add("lucy"); request.setAttribute("list", list); %> <%-- itmes: 需要遍历的数据 var: 每个对象的名称(使用时) begin: 从哪个开始 end: 到哪个结束 step:每次跳过几个 --%> 姓名:${name}

<% Map map = new HashMap(); map.put("s1", "狗娃"); map.put("s2", "狗蛋"); map.put("s3", "狗剩"); request.setAttribute("map", map); %> key: ${entry.key },value: ${entry.value}

<%--c:forTokens :循环特殊字符串--%> 课程:${c}
<%-- c:redirect --%> <% //response.sendRedirect(request.getContextPath()+"/target.jsp"); %> <%-- url: 自动带上项目名称 --%> <%-- --%> <%-- c:url: 简化路径写法 --%> ">跳转

通过javaee的标签,以后能够在页面尽可能的不写入java脚本代码,通过el表达式和标签的使用能够取代之

javaee自带的标签c标签,使用c标签需要导入该标签的uri

你可能感兴趣的:(javaee)