博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器端——jsp
阅读量:5157 次
发布时间:2019-06-13

本文共 2991 字,大约阅读时间需要 9 分钟。

jsp一种动态web开发技术,JSP全名为Java Server Pages

jsp、el、jstl

https://github.com/StingLon/WEB-/blob/master/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF-jsp#L7

 

和servlet技术一样都是用于动态开发web页面的技术,jsp本质是servlet其特点就是HTML和Java代码共同存在

JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的。

Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

JSP侧重于视图,Servlet主要用于控制逻辑。

 

JSP是如何被执行的:

当客户端向一个jsp页面发送请求时,Web Container将jsp转化成servlet的源代码(只在第一次请求时),然后编译转化后的servlet并加载到内存中执行,执行的结果response到客户端

jsp只在第一次执行的时候会转化成servlet,以后每次执行,web容器都是直接执行编译后的servlet,所以jsp和servlet只是在第一次执行的时候不一样,jsp慢一点,以后的执行都是相同的

 

jsp的缺点?

1)不好调试
2)可读性差

 

1.语法:
什么让jsp有自己的方法:<% (方法) %>

注释方法: jsp: <%-- --%>

html/xml注释方法: <!-- -->

 

2.JSP指令:(taglib、include 、page)

为TOMCAT设计,只是告诉tomcat如何处理JSP页面中的其他部分。 格式: <$@ 指令 属性名="值" %> 

1.page指令:导包

(head前添加)

例如:

<%@page contentType="text/html;charset=UTF-8" language="java" %>

 

2.include指令:引入其他JSP

(body中添加) 

静态包含: <%@ include file="路径" %> 把文件的代码内容都包含进来,再编译
动态包含: <jsp:include page=""/>

<jsp:include page="foot.jsp"/>

区别:动态包含是运行时包含把所有JSP编程成单独的servlet,静态包含是编译时包含把所有JSP编译成一个servlet,效率比动态好

【如果有相同名称的参数,使用静态包含就会报错!】!
3.taglib指令(导入标签库使用 :<%@ taglib uri="/struts-tags" prefix="s"%> )

 

 

3.JSP常用标签(行为)

1.include行为 <jsp:include page=""/> include行为是动态包含

2.param行为 <jsp:param page=""> 

<jsp:param name="username" value="zhongfucheng"/>
</jsp:forward>
3forward行为 <jsp:forward page=""/> 其实forward行为就是对其封装!

例: <jsp:forward page="head.jsp">

//4.directive行为
//5.javaBean行为

 

(4)九大隐式对象:

Request 用户端请求,此请求会包含来自GET/POST请求的参数
Response (网页传回用户端的回应)
Session (用来保存用户信息 ,与请求有关的会话期) 内置对象session其实就是HttpSession
Application (正在执行的内容) 内置对象application其实就是ServletContext对象
Config (服务器配置,可以取得初始化参数)
Page (指当前页面转换后的servlet类的实例 JSP网页本身) page对象相当于普通java类的this
Exception (错误页面中使用) java.lang.Exception类的对象
Out (用于页面输出)
pageContext (页的属性是在这里管理,代表的编译后JSP内容,例如.getRequest()返回request对象) 代表着JSP页面编译后的内容,当前JSP页面
pageContext 的方法:
setAttribute(String name,Objcet o)
getAttribute(String name)
removeAttribute(String name)
findAttribute(String name)

PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。

pageContext.forward(String url)
pageContext.include(String url)

 

 

4种属性;
page【只在一个页面中保存属性,跳转页面无效】
requet【只在一次请求中保存属性,服务器跳转有效,浏览器跳转无效】
session【在一个会话范围中保存属性,无论何种跳转均有效,关闭浏览器后无效】
application【在整个服务器中保存,所有用户都可以使用】

 

 

JSP两种技术
1.el
2.JSTL

 

1.EL 表达式语言

EL表达式是用"${}"括起来的脚本,用来更方便的读取对象
EL表达式主要用来读取数据,进行内容的显示!

语法:${标识符}

EL表达式如果找不到相应的对象属性,返回的的空白字符串“”,而不是null,这是EL表达式最大的特点!

 

 

2.JSTL                  JSP Standard Tag Library 即JSP标准标签库。

实现了基本的功能:集合的遍历、数据的输出、字符串的处理、数据的格式化等等!

使用JSTL标签库步骤:
1.导入jstl.jar和standard.jar开发包
2.在JSP页面中用tablib指令引入需要用到的JSTL标签

 

core标签库

core标签库是JSTL的核心标签库,实现了最基本的功能:流程控制、迭代输出等操作! core标签库的前缀一般是c
c:out
c:set
c:remove
c:catch
c:if
c:choose
c:forEach
c:forTokens
c:import
c:param
c:url
c:redirect

 

 

 自定义标签

JSTL标签库只提供了简单的输出等功能,没有实现任何的HTML代码封装,并且某些复杂类型转换,或者逻辑处理的时候,JSTL标签库完成不了,需要自定义标签!

我们可以有两种方式来实现自定义标签:

传统方式,实现Tag接口(老方法)

简单方式,继承SimpleTagSupport类, 一般调用doTag方法或者实现SimpleTag接口

 

转载于:https://www.cnblogs.com/StingLon/p/9816706.html

你可能感兴趣的文章
跟着辛星用PHP的反射机制来实现插件
查看>>
Android应用开发-网络编程①
查看>>
input中的name,value以及label中的for
查看>>
静态库制作-混编(工程是oc为基础)
查看>>
jQuery 显示加载更多
查看>>
搭建SSM框架的配置文件
查看>>
代理模式
查看>>
Confluence 6 系统运行信息中的 JVM 内存使用情况
查看>>
Confluence 6 升级以后
查看>>
用JS实现版面拖拽效果
查看>>
二丶CSS
查看>>
《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
查看>>
Hibernate主键生成策略
查看>>
Crushing Machinery - Strong Support of Cement Enterprise
查看>>
AsyncTask
查看>>
Django框架(十九)—— drf:序列化组件(serializer)
查看>>
JS一些概念知识及参考链接
查看>>
关于JS中&&和||用法技巧
查看>>
suoi14 子树查找 (dfs)
查看>>
密闭类、密闭方法
查看>>