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工程结构:

 工程名(不能含中文)

   SRCJava源文件

   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相对路径

 

隐士对象:

输入输出对象: requestresponseout

作用域通信对象:sessionapplicationpageContext

ServLet对象:pageconfig

错误对象: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标准动作:

 <jspuseBean>→创建一个对象

属性:

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:执行后面的内容

 

 

原创粉丝点击