1 Jsp加强回顾

Jsp加强

1)Jsp的9大内置对象

request       HttpServletRequet

response     HttpServletResponse

config         ServletConfig

application     ServletContext

exception      Throwable

page          Object

pageContext    PageContext

out              JspWriter

session        HttpSession

2)Jsp的4个域对象

request

session

application

pageContext

作用范围:

pageContext : 处于当前jsp页面中有效的!!

request:      处于同一个请求中有效的!!

session:      处于同一个会话中有效的!

application:   处于同一个web应用中有效的!

3)EL表达式

替代jsp表达式,用于向浏览器输出域对象中的变量值和表达式计算的结果。

语法:

${变量}

3.1 输出普通字符串: ${name}

3.2 输出对象属性:  ${student.name}  注意: .name 相当于  .getName()方法

3.3 输出List集合:   ${list[0].name }   注意: [0]  相当于 get(下标)方法

3.4 输出map集合:  ${map[key].name}  注意: [key]相当于get(key)方法

4)jsp标签

替代jsp脚本,用于在jsp页面中执行java代码

4.1 内置标签:

<jsp:foward/>   request.getRequesetDipsacher("/路径").foward(request,response);

<jsp:param/>   参数标签    ?name=eric

<jsp:include/>   包含其他页面 ,动态包含

静态包含: 先合并再翻译。不能传递参数

动态包含: 先翻译再合并。可以传递参数

4.2 jstl标签库 (java标准标签库)

使用步骤:

1)确保jstl支持的jar包存在于项目中

2)在jsp页面中导入标签库

<%@taglib uri="标签库声明文件tld文件的标记" prefix="前缀"%>

3)使用标签库中的标签

核心标签库:

<c:set />     保存数据到域对象中

<c:out/>     从域中取出数据

<c:if/>       单条件判断

<c:choose/> + <c:when/> + <c:otherwise/>  多条件判断

<c:forEach />  遍历数据

<c:forTokens/>  遍历特殊字符串

<c:redirect/>   重定向

今天的目标:    自定义标签   + 编码实战(下)

2 自定义标签

2.1 引入

需求: 向浏览器输出当前客户的IP地址 (只能使用jsp标签)

2.2 第一个自定义标签开发步骤

1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类

/**

* 标签处理器类

* @author APPle

* 1)继承SimpleTagSupport

*

*/

public class ShowIpTag extends SimpleTagSupport{

private JspContext context;

/**

* 传入pageContext

*/

@Override

public void setJspContext(JspContext pc) {

this.context = pc;

}

/**

* 2)覆盖doTag方法

*/

@Override

public void doTag() throws JspException, IOException {

//向浏览器输出客户的ip地址

PageContext pageContext = (PageContext)context;

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();

String ip = request.getRemoteHost();

JspWriter out = pageContext.getOut();

out.write("使用自定义标签输出客户的IP地址:"+ip);

}

}

2)在web项目的WEB-INF目录下建立itcast.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)

<?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">

<!-- 标签库的版本 -->

<tlib-version>1.1</tlib-version>

<!-- 标签库前缀 -->

<short-name>itcast</short-name>

<!-- tld文件的唯一标记 -->

<uri>http://gz.itcast.cn</uri>

<!-- 一个标签的声明 -->

<tag>

<!-- 标签名称 -->

<name>showIp</name>

<!-- 标签处理器类的全名 -->

<tag-class>gz.itcast.a_tag.ShowIpTag</tag-class>

<!-- 输出标签体内容格式 -->

<body-content>scriptless</body-content>

</tag>

</taglib>

3) 在jsp页面的头部导入自定义标签库

<%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>

4) 在jsp中使用自定义标签

<itcast:showIp></itcast:showIp>

2.3 自定义标签的执行过程

问题: http://localhost:8080/day14/01.hellotag.jsp  如何访问到自定义标签?

前提: tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!

1)访问01.hellotag.jsp资源

2)tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法

3)检查jsp文件的taglib指令,是否存在一个名为http://gz.itcast.cn的tld文件。如果没有,则报错

4)上一步已经读到itcast.tld文件

5)读到<itcast:showIp> 到itcast.tld文件中查询是否存在<name>为showIp的<tag>标签

6)找到对应的<tag>标签,则读到<tag-class>内容

7)得到 gz.itcast.a_tag.ShowIpTag

构造ShowIpTag对象,然后调用ShowIpTag里面的方法

2.4 自定义标签处理器类的生命周期

SimpleTag接口:

void           setJspContext(JspContext pc)  --设置pageContext对象,传入pageContext(一定调用)

通过getJspCotext()方法得到pageContext对象

void           setParent(JspTag parent)  --设置父标签对象,传入父标签对象,如果没有父标签,则不                                                                                                                                          调用此方法。通过getParent()方法得到父标签对象。

void     setXXX(值)             --设置属性值。

void           setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象                                                                                                                                         中,然后传入JspFragment对象。通过getJspBody()方法                                                                                                                                                得到标签体内容。如果没有标签体内容,则不会调                                                                                                                                          用此方法

void           doTag()                     --执行标签时调用的方法。(一定调用)

2.5 自定义标签的作用

1)控制标签体内容是否输出

2)控制标签余下内容是否输出

3)控制重复输出标签体内容

4)改变标签体内容

5)带属性的标签

步骤:

5.1 在标签处理器中添加一个成语变量和setter方法

//1.声明属性的成员变量

private Integer num;

//2.关键点: 必须提供公开的setter方法,用于给属性赋值

public void setNum(Integer num) {

this.num = num;

}

2.6 输出标签体内容格式

JSP:   在传统标签中使用的。可以写和执行jsp的java代码。

scriptless:  标签体不可以写jsp的java代码

empty:    必须是空标签。

tagdependent : 标签体内容可以写jsp的java代码,但不会执行。

2.7 案例

核心标签库: c:if   c:choose+c:when+c:otherwise   c:forEach

高仿核心标签库

3 编码实战

3.1 JavaBean

JavaBean,  咖啡豆。 JavaBean是一种开发规范,可以说是一种技术。

JavaBean就是一个普通的java类。只有符合以下规定才能称之为javabean:

1)必须提供无参数的构造方法

2)类中属性都必须私有化(private)

3)该类提供公开的getter 和 setter方法

JavaBean的作用: 用于封装数据,保存数据。

访问javabean只能使用getter和setter方法

JavaBean的使用场景:

1)项目中用到实体对象(entity)符合javabean规范

2)EL表达式访问对象属性。${student.name}  调用getName()方法,符合javabean规范。

3)jsp标签中的属性赋值。 setNum(Integer num)。符合javabean规范。

4)jsp页面中使用javabean。符合javabean规范

问题:

以下方法哪些属于javabean的规范的方法? 答案 :( 1,3,5,6  )

注意: boolean类型的get方法名称叫 isXXX()方法

1)getName()    2)getName(String name)

3)setName(String name)   4)setName()

5) setFlag(boolean flag)   6)isFlag()

3.2 web开发模式

总结:

1)自定义标签

自定义标签作用

案例

2)编码实战

JavaBean规范: 三点

MVC开发模式:

Model - JavaBean实现。用于封装业务数据

View - Jsp实现。用于显示数据

Controller-  servlet实现。用于控制model和view

三层结构:

dao层: 和数据访问相关的操作

service层: 和业务逻辑相关的操作

web层: 和用户直接交互相关的操作(传接参数,跳转页面)

12、Jsp加强/自定义标签/JavaBean的更多相关文章

  1. Servlet和JSP之自定义标签学习

      此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Sprin ...

  2. [Java] JSP笔记 - 自定义标签

    自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...

  3. 【JSP】自定义标签开发入门

    JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...

  4. Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

    本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...

  5. JavaWeb之 JSP:自定义标签

    当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 自定义标签 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的 ...

  6. JavaWeb之 JSP:自定义标签的创建和使用

    当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签. 下面我们先来开发一个自定义标签,然后再说它的原理吧! 自定义标签的开发步骤 步骤一 编写一个普通的java类, ...

  7. jsp的自定义标签

    1.相对于JSTL或Spring等第三方标签库而言的,用来实现项目中特定的功能需求. 2.自定义标签基本的组成部分 ①页面上看得见的部分 [1]通过taglib引入标签库 [2]标签本身 ②xxx.t ...

  8. JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标 ...

  9. JSP--JSP语法--指令--include(动态包含/静态包含)--九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

    一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1.    JSP模板元素:JSP中HT ...

随机推荐

  1. 复制中的NOT FOR REPLICATION

    错误#1 10:51 2012-9-4sp_MSget_repl_commands 重复键插入解答#1 修改distribution库下sp_MSget_repl_commands 存储过程decla ...

  2. [算法]Comparison of the different algorithms for Polygon Boolean operations

    Comparison of the different algorithms for  Polygon Boolean operations. Michael Leonov 1998 http://w ...

  3. bind: address already in use

    2016/04/18 09:46:06 server.go:36: listen at 0.0.0.0:9530 2016/04/18 09:46:06 server.go:39: listen er ...

  4. 抽取AWR数据

    使用$ORACLE_HOME/rdbms/admin/awrextr.sql $ sqlplus '/as sysdba' SQL*Plus: Release Production on Fri No ...

  5. [转]Entity Framework技术导游系列开篇与热身

    学习Entity Framework技术期间查阅的优秀文章,出于以后方便查阅的缘故,转载至Blog,可查阅原文:http://blog.csdn.net/bitfan/article/details/ ...

  6. HTTP报文

    HTTP报文分为请求报文(request message)与响应报文(response message). 一.报文的组成部分 一个HTTP报文由3部分组成,分别是: (1).起始行(start li ...

  7. PAT 解题报告 1048. Find Coins (25)

    1048. Find Coins (25) Eva loves to collect coins from all over the universe, including some other pl ...

  8. 《30天自制操作系统》09_day_学习笔记

    harib06a: 在昨天的最后一部分,我们已经变成了32位的模式,目的就是希望能够使用电脑的全部内存. 虽然鼠标的显示处理有一些叠加问题,不过笔者为了不让我们感到腻烦,先带我们折腾一下内存 这里笔者 ...

  9. 20145207 《Java程序设计》第5周学习总结

    前言:先聊两句,上午电路实习,刚开始没多久就让电烙铁烫了,倒霉催的~晚上来这里接着弄代码,透心凉心飞扬~ 教材学习内容总结 一.异常处理 1.语法与继承结构 使用try.catch: Java中所有错 ...

  10. [转] java编程规范

    原文链接: 资料推荐--Google Java编码规范 之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/ ...