`
xuweijian2009
  • 浏览: 22920 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
JSP简介
 JSP---Java Server Pages
 拥有servlet的特性与优点(本身就是一个servlet)
 直接在HTML中内嵌JSP代码
 JSP程序由JSP Engine先将它转换成Servlet代码
(放在:apache-tomcat-6.0.14\work\Catalina),接着将它编译成类文件载入执行
 只有当客户端第一次请求JSP时,才需要将其转换、编译
 优点:
 优良的性能
优于CGI,PHP,ASP
 平台无关性
操作系统无关,Web服务器无关
 可扩展性
tag的扩展机制,简化页面开发
JSP编程—基本语法
 JSP传统语法
 Declaration
 Scriptlet
 Expression
 Comment
 Directives
 Action动作指令
 内置对象
 JSTL
 JSF
JSP编程---Declaration
 基本语法:
 <%!  %>
 说明:在此声明的变量、方法都会被保留成唯一的一份,直到JSP程序停止执行
 例:
<%!
int i;
public void setName(){… …}
%>

Scriptlet
 基本语法:
 <%程序代码区%>
 可以放入任何的Java程序代码
 例:
<%
for (int i=0;i<10,i++)
{
… …
}
%>
表达式
 基本语法:
 <%=… …%>
 =后面必须是字符串变量或者可以被转换成字符串的表达式
 不需要以;结束
 只有一行
 例:
 <%=“hello world”%>
 <%=i+1%>
 <%=request.getParameter(“name”)%>
Directive
 Directive(编译指令)相当于在编译期间的命令
 格式:
 <%@Directive 属性=“属性值”%>
 常见的Directive:
 page
 include
 taglib
Directive--page
 指明与JSP Container 的沟通方式
 基本格式:
<%@page language=“script language”|
extends=“className”|
import=“importList”|
buffer=“none|kb size”|   --none:不缓冲,默认8k
session=“true|false”|   --是否可以使用session,默认true
autoFlush=“true|false”  --缓冲器是否自动清除,默认true
isThreadSafe=“true|false”|  --默认false(永远不要设成true)
info=“infoText”|    --任何字符
errorPage=“errorPageUrl”|
isErrorPage=“true|false”|
contentType=“contentTyepInfo”|
pageEncoding=“gb2312”
%>
Directive--include
 将指定的JSP程序或者HTML文件包含进来
 格式:
 <%@include file=“fileURL%>
 JSP Engine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把文件的代码copy到该位置,然后进行转换和编译,只生成一个java和class)
 限制:
 不能向fileURL中传递参数
 不能abc.jsp?user=aaa
Action
 Action(动作指令)在运行期间的命令
 常见的:
 jsp:useBean
 jsp:setProperty
 jsp:getProperty
 jsp:include
 jsp:forward
 jsp:param
 jsp:plugin
 嵌入applet
jsp:include/jsp:param
 用于动态包含JSP程序或HTML文件等
 除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engine编译。
 格式:
 <jsp:include page=“URLSpec” flush=“true”/>
 <jsp:include page=“URLSpec” flush=“true”>
<jsp:param name=“ParamName” value=“paramValue”/>
</jsp:include>
 jsp:param用来设定include文件时的参数和对应的值
 例如:
 date.jsp/include.jsp
 Compute.html/Compute.jsp/divide.jsp/multiply.jsp
 和编译指令include的区别
 include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入
 Include不能带参数, 而<jsp:include>可以
 动态包含的文件和被包含文件用的是同一个request对象
jsp:forward / jsp:param
 用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)
 格式:
 <jsp:forward page=“urlSpec” flush=“true”/>
 <jsp:forward page=“urlSpec”>
<jsp:param name=“paramName” value=“paramValue”/>
</jsp:forward>
 <jsp:param>用于指定参数和其对应的值
 例如:
 test.jsp
 forward.jsp / forforward.jsp
 forward1.jsp / forforward1.jsp(with parameters)
 Forward的页面和forward到的页面用的是同一个request
 与此相对应的是
 response.sendRedirect
<jsp:forward>与response.sendRedirect的区别
 <jsp:forward>
 使用同一个request
 forward后的语句不会继续发送给客户端
 速度快
 服务器内部转换,
 可以传参数
 response.sendRedirect
 是不同的request
 send后的语句会继续执行,除非return
 速度慢
 需要到客户端的往返,可以转到任何页面
 可以传参数,直接写在url后面
jsp:useBean
 通过jsp:useBean,可以在JSP中使用定义好的Bean
 Bean的基本要素:
 必须要有一个不带参数的构造器。在JSP元素创建Bean时会调用空构造器
 Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,变量名称首字母必需小写
 通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写
 基本用法:
 test.jsp/CounterBean.java 不要使用裸体类(规范要求)
jsp:useBean(con.)
 jsp:useBean各项参数含义:
 id:对象实例名称
 scope:Bean作用的范围,默认为page,对整个jsp页面有效
 class:Bean类名称(全名)
 type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类
 Scope各项参数的意义:
 page:仅涵盖使用JavaBean的页面
 (PageBean.jsp/CounterBean.java)
 request:有效范围仅限于使用JavaBean的请求
 (RequestBean.jsp/RequestBean2.jsp/CounterBean.java)
 session:有效范围在用户整个连接过程中(整个会话阶段均有效)
 (SessionBean.jsp/Session2.jsp/CounterBean.java)
 application:有效范围涵盖整个应用程序。也就是对整个网站均有效
 (Application.jsp/Application2.jsp/CounterBean.java)
jsp:useBean(con.)
 jsp:setProperty的格式:
 <jsp:setProperty name=“beanName”
property=“propertyName” |property=“*”
value=“property value” |param=“paramName”/>
 相当于beanName.setPropertyName(value)方法调用(setXxx()方法)
 jsp:getProperty的格式:
 <jsp:getProperty name=“beanName” property=“propertyName”/>
 相当于beanName.getPropertyName()方法调用(getXxx()方法)
jsp:useBean(con.)
 建立表单参数和Bean属性之间的关联
 通过param指定表单元素的名称,通过perperty指定对应的Bean属性名称,由此建立这两个变量的关联
 (SaleEntry.jsp/SaleEntry.java,用url传递参数)
 通过*来设置所有属性和输入参数之间的关联
   (SayHelloBean.html/SayHelloBean.jsp/HelloBean.java)
 在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据

 初步解释编码问题


JSP内置对象
 JSP的内置对象
 out
 request
 response
 pageContext à用的很少
 session
 application
 config à用的很少
 exception
 Pageà用的很少
JSP编程---out
 Out内置对象是一个缓冲的输出流,用来给客户端返回信息。它是javax.servlet.jsp.JspWriter的一个实例
 典型应用:向客户端输出内容
 例:向客户端输出一个字符串“Hello World”
 (HelloWorld.jsp)
JSP--out
 常用方法:
 println():向客户端输出各种类型数据
 newLine():输出一个换行符
 close():关闭输出流
 flush():输出缓冲区里的数据
 clearBuffer():清除缓冲区里的数据,同时把数据输出到客户端
 clear():清除缓冲区里的数据,但不把数据输出到客户端
 getBufferSize():返回缓冲区的大小
JSP编程--request
 request内置对象表示的是调用JSP页面的请求。通常,request对象是javax.servlet.http.HttpServletRequest接口的一个实例
 典型应用:通过request.getParameter(“paramName”)可以获得Form提交过来的参数值
JSP--request
 可以用此对象取得请求的Header、信息(如浏览器版本、语言和编码等)、请求的方式(get/post)、请求的参数名称、参数值、客户端的主机名称等
 常用方法:
 getMethod():返回客户端向服务器端传送数据的方法
 getParameter(String paramName):返回客户端向服务器端传送的参数值,该参数由paramName指定
 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration)
 getParameterValues(String  name):获得指定参数的所有值,由name指定
 getRequestURI():获得发出请求字符串的客户端地址
 getRemoteAddr():获取客户端的IP地址
 getRemoteHost():获取客户端机器名称
 getServerName():获取服务器的名字
 getServletName():客户端所请求的脚本文件路径
 getServerPort():获取服务器端的端口
 对应类: javax.servlet.http.HttpServletRequest
JSP-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(String url):重定向JSP文件
 和<jsp:forward>的区别
 sendRedirect通过客户端发起二次申请,不同的request对象
 Jsp:forward是同一个request,在服务器内部转发
 setContentType(String contentType):设置MIME类型与编码方式
JSP-Cookie
 Http协议的无连接性要求出现一种保存C/S间状态的机制
 Cookie:保存到客户端的一个文本文件,与特定客户相关
 Cookie以“名-值”对的形式保存数据
 通过getName和getValue的方式得到相应的名字和值
JSP—session & application
 <% @page session=“true”%>(默认)--表示session功能已经在jsp页面中启动
 session常用方法:
 void setAttribute(String name,Object value)
 Object getAttribute(String name)
 boolean isNew()
 application
 ServletContext
Servlet和JSP的通信
 从JSP调用Servlet可用<jsp:forward>
请求信息自动传递到Servlet
 或者通过sendRedirect

 从Servlet调用JSP使用
 RequestDispatcher接口的forward(req, res)方法
 请求信息需要显式传递(在req、res参数中)
 或者通过sendRedirect

 例如:
 FromJspToServlet.jsp / ServletToJsp.java / ServletUseJsp.jsp
 forward可以用 ”/” 路径, 是指web app的根路径, servlet forward jsp的时候一定要用 “/”开头
 jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径
 servlet sendRedirect jsp也是
 request.getContextPath起作用了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics