JSP
来源:互联网 发布:淘宝论坛怎么发帖 编辑:程序博客网 时间:2024/03/29 01:46
Java Web应用开发
IO流:
PrintWriter(可输出任意数据类型)(自动换行,自动刷新)
PrintWriter pw=new PrintWriter(fw,true)自动刷新
自动刷新: format(); printf(); println()
JSP笔记
TCP协议:
双向,可靠,稳定,安全,持续
HTTP协议请求报文:
get<空格>/[请求的URL]<空格>HTTP/协议版本号
……
Host:<空格>服务器域名或IP地址:端口
<空格>
HTTP协议响应报文:
HTTP/协议版本号<空格>状态码<空格>OK
……
ContentType:<空格>text/html;<空格>charset=字符集编码
解析HTTP协议判断协议格式:
获得文件名、
①文件存在:发送成功,响应,读取文件,写到客户端
②文件不存在:
TomCat结构:
bin:服务器启动协议
conf:服务器配置文件
lib:服务器的Jar包
logs:日志文件
temp:临时文件
webapps:WEB应用程序
WEB工程结构:
工程名(不能含中文)
├ SRC→Java源文件
┕ WebRoot→ Web根目录(图片,文字,页面)
┝ MEAT-INF
┕WEB-INF→工程配置文件
┕Lib→工程需要的Jar包
Jsp:
视图层 →(请求) 控制层 → 模型层
响应 (页面转发)← true/false (返回)← 数据操作
Jsp内容:
静态文本:静态文本,HTML标签
脚本:<% Java代码 %>(能够写在Java方法中的代码)
声明:<%! 方法 % >
表达式:<%=表达式%>(输出:数字,字符串,变量,标签,基本算术运算,基本关系运算)不存在分号
注释:
┝ <!- -内容 - ->:客户端可见
┕ <%- - 内容- ->:客户端不可见
Page指令:(设置当前Jsp页面的属性)
<% @ page import=” ” %> 导包
设置回传页面的文件格式和编码方式:
ContentType=”Type ;charset=characterset”
缺省 “Text/html;charset=ISO-8859-1”
PageEncoding(设置页面编码):
允许中文编码:GBK,GB2312,UTF-8
设置当前Jsp页面错误,跳转到那个页面:
errorPage=”URL”:
<% @ include file=”文件路径(URL)” %>
├ 避免使用<html>、<body>标签
├ URL不能为变量,只能写路径
├ URL不能接参数
┕ URL为相对路径
隐士对象:
输入输出对象: request,response,out
作用域通信对象:session,application,pageContext
ServLet对象:page,config
错误对象:exception
JSP的内置对象及方法。
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)
out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet实例
Request:
方法:
getMethod():获得请求方式;
getRequestURI():请求的URI;
getRequestURL():获得请求的URL;
getRemoteHost():获得请求客户端的主机
getRemoteAddr():获得请求客户端的地址
getRemotePort():获得请求客户端的端口号
getParameter(String name):通过表单元素名获得表单数据
setAttribute(key,value):设置页面跳转发送的信息
getAttribute(key):获得跳转发送的信息
setCharacterEncoding():设置请求编码的类型,只对POST有效
getParameterValues(String name):获得表单数据集
跳转页面,服务器转发请求:
request.getRequestDispatcher(“URL”).forward(request,response)
重定向:自动跳转:
Response.setHeader(“refresh”,”时间(秒);url=页面”)
服务器转发request中的URL显示的是原请求的页面
重定向中URL显示的是请求后跳转的页面
两次请求:
├ 表单提交
├ 刷新
┕ 超链接
isErrorPage=”true”(Page中属性) →错误页
Exception:只能在错误页中使用
Session:(同一客户端)
├setAttribute(key,value)
┕getAttribute(key)
Invalidate():注销
setMaxInactiveInterval(秒):设置session最长持续时间
Cookie:
Cookie(key,value):创建Cookie
Cookie对象.SetMaxAge(毫秒):有效保存时间
Response.addCookie(cookie):将Cookie添加到响应中去
获得请求中所有的Cookie:
Cookie[]→request.getCookie()
Cookie[i].getName()→获得Cookie的名字→key
Cookie[i].getValue()→获得Cookie的值→value
重写URL:
地址?参数1=值1&参数2=值2&……
隐匿表单:Type=”hidden”
JavaBean:
Jsp标准动作:
<jsp;useBean>→创建一个对象
属性:
├ id→实例名
├class→指定创建哪个类的对象(含包名)
┕ scope→指定对象从那个作用域取
┝ page=ContentPage
┝ request=request
┕ session=session
┕ application=application
<jsp:setProperty>设置某个对象的属性
属性:
┝ name:对象名
┝ property:属性名
┕ value:值
┕ param:通过表单元素名得到对应值,即属性值
若property用*表示,则表单元素的那么必须和JavaBean的属性名相同
<jsp:getProperty> 获得并显示某个对象的属性
属性:
┝ name:对象名
┕ property:属性值
<jsp:forward page=”URL”>服务转发
①可以带参数发送请求
②也可以set参数<jsp:param name=” ” value=” ”>
<jsp:include>在页面被请求的时候引入一个文件
对比:
Include指令:静态包含;编译时就把另一个页面包含进来把两个合并为一个页面,在编译是已经决定包含的内容运行时不能在进行改变
Include动作:动态包含;当运行include动作时,在由该页面去请求包含页面,运行时可以知道被包含的内容(可以带参数)
Jsp表达式:(EL表达式)
${EL expression}
静态文本
标准标签和自定义标签
算术运算
关系运算
${empty “”} 检验空值(空字符串,数组,集合)
<%@ page isELIgnored=”true/false”%>:是否忽略表达式
用表达式访问变量则需用setAttribute方法将变量设置到某个作用域中
pageScope
requestScope
sessionScope
applicationScope
若多个作用域中保存了同一参数名,省略对象名访问该参数则从作用域中最小的对象开始查找,不存在则返回null
获得传递的单个参数
param.参数名
param[“参数名”]
获得多个参数
paramValues String数组
标签
导入标签库:<% taglib prefix(使用标签是前缀)=’’ uri(描述文件中的uri,指定导入那个标准标签库(路径))=’’%>(指令)
Set:
setAttribute(key,value):
属性:
var:key value:值 scope;作用域 target:Object property:属性
Remove:
removeAttribute(key):
删除Attribute根据key
Scope:默认
Out:
页面输出
属性:value:值 default:默认值
条件标签:
if
属性:test
如果test属性为true则执行if标签中的内容,否则不执行
choose:
┝ when
┕ otherwise
test属性若为true则执行when中的内容否则执行otherwise中的内容
迭代标签
forEach
属性:
items:迭代的对象(数组,集合,HashMap)
var :每次循环获得对象
Begin:开始量 end:结束值 step:递增量
forTokens:分割字符串的迭代
属性:
items
delims:分割字符
自定义标签:
标签处理程序
标签描述文件
形式:
空标签
带属性的标签
带有体的标签
带有体和属性的标签
接口:Tag /SimpleTag
Tag中抽象方法:
setPageContext():初始化自动调用获得页面pageContext对象
doStartTag():标签执行到开始标记时调用该方法
返回值:忽略标签体: return SKIP_BODY
把标签体输出到页面: return EVAL_BODY_INCLUDE
doEndTag():当标签结束时调用该方法
return SKIP_PAGE: 忽略以下页面进行输出
return EVAL_PAGE继续执行后面的内容
自定义标签描述文件:
头
<taglib>
<jsp-version>jsp版本号</jsp-version>
<tlib-version>标签版本</tlib-version>
<short-name>标签简称</short-name>
<uri>标签库的URI</uri>
<tag>
<name>标签的名字</name>
<tag-class>标签处理程序的java类(含包名)</tag-class>
</tag>
</taglib>
带属性的标签的定义:
<attribute>
<name>属性名</name>
<requried>描述此属性是否在标签中一定要存在</required>
<rtexprvalue>是否支持表达式</rtexprvalue>
</attribute>
迭代自定义标签体:IterationTag接口
doAfterBody()
return EVAL_BODY_AGAIN:继续执行循环内容
return EVAL_PAGE:执行后面的内容