JSP-Java Server Page基础知识

1、语法

分为JSP传统语法,JSTL和JSF。

1.1 JSP传统语法

1.1.1 Declaration

格式:<%! %>

说明:声明变量、方法,在当前JSP文件中是唯一的;

实例:<%! int i; public void method(){......}%>;

1.1.2 Scriptlet

格式:<%标准java代码%>

1.1.3 打印表达式

格式:<%=表达式 %>

注意:=后面必须是字符串变量或者可以被转换成字符串的表达式;不需要以“;”结束;只有一行。

实例:

<%=“hello world”%>
<%=i+1%>
<%= request.getParameter (“name”)%>
1.1.4 Directive
编译指令,相当于在编译期间的命令。
格式: <%@Directive 属性 =“ 属性值” %>

常见的Directive有:page,include, taglib

<%@page ...%> 指明与JSP容器的沟通方式。

<%@include file="fileURL"%>包含文件,可以是JSP程序或者HTML文件,JSP Engine会在JSP程序的转换时期先把file文件包含进来,然后开始执行转换和编译的工作,最后只生成一个java和class。

JSP注释格式:

<%--… …--%>

<%//… …%>

<%/*… …*/%>


1.1.4 Action

Acton是在运行期间的命令

jsp:useBean可以在JSP中使用定义好的Bean。

jsp:useBean各项参数含义:
id: 对象实例名称
scope:Bean 作用的范围, 默认为 page ,对整个 jsp 页面有效
class:Bean 类名称 ( 全名)
type:Bean 实例类型,可以是本类,或其父类,或实现的接口,默认为本类
Scope各项参数的意义:
page: 仅涵盖使用 JavaBean 的页面
request: 有效范围仅限于使用 JavaBean 的请求
session: 有效范围在用户整个连接过程中(整个会话阶段均有效)
application: 有效范围涵盖整个应用程序。也就是对整个网站均有效
jsp:setProperty的格式:

<jsp:setPropertyname=“beanName”

property=“propertyName”|property=“*”

value=“propertyvalue” |param=“paramName”/>

相当于 beanName.setPropertyName (value) 方法调用 ( setXxx () 方法 )

jsp:getProperty的格式:
< jsp:getProperty name=“ beanName ” property=“ propertyName ”/>
相当于 beanName.getPropertyName () 方法调用( getXxx () 方法)
建立表单参数和Bean属性之间的关联
通过 param 指定表单元素的名称,通过 perperty 指定对应的 Bean 属性名称,由此建立这两个变量的关联 ,用 url 传递参数
通过*来设置所有属性和输入参数之间的关联
在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据

jsp:inclue

用于动态包含文件。只有执行到该指令时,才会被JSP Engine编译,动态包含的文件和被包含文件使用同一个request对象。

jsp:param用于设定include文件时的参数和对应的值

<jsp:includepage=“URLSpec” flush=“true”>

<jsp:paramname=“ParamName” value=“paramValue”/>

</jsp:include>


jsp:forward用于将一个jsp的内容传送到page指定的JSP程序或者Servlet中处理,forward的页面和forward到的页面使用同一个request。

jsp:param指定参数和值

<jsp:forwardpage=“urlSpec”>

<jsp:paramname=“paramName” value=“paramValue”/>

</jsp:forward>


jsp:forward和JAVA代码response.sendRedirect()有区别。

<jsp:forward>

使用同一个request

forward后的语句不会继续发送给客户端

速度快

服务器内部转换,

可以传参数

response.sendRedirect

是不同的request

send后的语句会继续执行,除非return

速度慢

需要到客户端的往返,可以转到任何页面

可以传参数,直接写在url后面


jsp:plugin


1.1.5 JSP内置对象

out :是缓存输出流,用于向客户端返回信息。

 常用方法:
println () :向客户端输出各种类型数据
newLine () :输出一个换行符
close() :关闭输出流
flush() :输出缓冲区里的数据
clearBuffer () :清除缓冲区里的数据,同时把数据输出到客户端
clear() :清除缓冲区里的数据,但不把数据输出到客户端
getBufferSize () :返回缓冲区的大小

request:表示当前JSP页面的请求。通常,request对象是javax.servlet.http.HttpServletRequest接口的一个实例

功能:可以用此对象取得请求的Header、信息(如浏览器版本、语言和编码等)、请求的方式(get/post)、请求的参数名称、参数值、客户端的主机名称等。

常用方法:

getMethod () :返回客户端向服务器端传送数据的方法

getParameter(StringparamName):返回客户端向服务器端传送的参数值,该参数由paramName指定

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration

getParameterValues(String  name):获得指定参数的所有值,由name指定

getRequestURI():获得发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端机器名称

getServerName():获取服务器的名字

getServletName():客户端所请求的脚本文件路径

getServerPort():获取服务器端的端口


response:表示将返回给客户端的响应,是javax.servlethttp.HttpServletResponse接口的一个实例。

功能:经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL
常用方法:

addCookie (Cookie cookie ) :添加一个 Cookie 对象,用于在客户端保存特定的信息
addHeader (String name,String value) :添加 HTTP 头信息,该 Header 信息将发送到客户端

containsHeader(String name):判断指定名字的HTTP文件头是否存在

sendError(int):向客户端发送错误的信息

sendRedirect(Stringurl):重定向JSP文件

<jsp:forward>的区别

sendRedirect通过客户端发起二次申请,不同的request对象

Jsp:forward是同一个request,在服务器内部转发

setContentType(StringcontentType):设置MIME类型与编码方式

cookie:

Http协议的无连接性要求出现一种保存C/S间状态的机制

Cookie:保存到客户端的一个文本文件,与特定客户相关

Cookie以“名-值”对的形式保存数据

通过getName和getValue的方式得到相应的名字和值


session:

<% @page session=“true”%>(默认)--表示session功能已经在jsp页面中启动
session常用方法:

void setAttribute(Stringname,Object value)

Object getAttribute(Stringname)

booleanisNew()

application

对应于ServletContext

es

2 Servlet 和JSP的通信

a. 从JSP调用Servlet可用<jsp:forward>,请求信息自动传递到Servlet中,或者通过调用response.sendRedirect。

b. 从Servlet调用JSP方法:

使用RequestDispatcher接口中的forward(req, res)方法,请求信息需要加到req参数中;

或者通过response.sendRedirect方法。

c. forward可以用绝对路径"/",是指web app的根路径,而Servlet forward jsp时必须要使用"/"开头。

d. jsp sendRedirect servlet应该使用相对路径,因为这里"/"指的是网站的根路径

e. servlet sendRedirect jsp 也应该使用相对路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值