第一节_基础知识

JSP(Java Server Page)是一种动态网页技术标准,在HTML中嵌入Java程序片段(Scriptlet)和JSP标签(tag)所构成。

Tomact服务器目录

Tomact目录 用途
/bin 存放启动和关闭Tomact的命令文件
/lib 存放所有应用程序都可以访问的JAR包
/conf 存放Tomact的配置文件,如server.xml,web.xml等
/logs 存放Tomact日志文件
/temp 存放临时文件
/webapps 存放应用程序的工程文件
/work 存放JSP生成的Servlet文件和字节码文件

Web项目中目录

  • WEB-INF目录:web.xml文件,配置文件;
  • classes目录:存编译后的Java文件;
  • lib目录:存Jar包。

JSP程序运行机制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
服务端收到客户端的请求
if(请求HTML/XML页面){
直接将页面相应代码发给客户端
}
else if(请求JSP页面){
if(页面第一次被请求 || 页面被修改过){
1.JSP文件(.jsp)转换成servlet文件(.java)
2.编译生成字节码文件(.class)
3.执行字节码文件,并将执行结果以HTML的形式返回给客户端。
}
else{
//页面之前已执行过且未被修改
直接执行已生成的字节码文件(.class),并将执行结果以HTML的形式返回给客户端。
}
}

JSP基本元素

  • 声明:<%! int a; %>,声明页面全局变量
  • 表达式:<%=...%>,将结果转成字符串形式输出到页面中
  • 代码片段(Scriptlet):<% ... %>,java代码片段
  • JSP指令(静态):<%@ xxx %>格式
    <%@ page 属性1="xx" 属性2="xx"%>,设置页面属性
    <%@ include file="文件名"%>,将文件插入到当前页面中(静态插入)
  • JSP动作(动态):<jsp:xxx />格式
    <jsp:include page="文件名"/>,将文件的执行结果插入到当前页面(动态插入)
    <jsp:forward page="文件名"/>,停止当前页面,转向指定HTML/JSP文件的页面(地址栏不变)
    <jsp:param name="变量名" value="变量值"/>,传递参数,作为include/forward的子标签使用,在其他页面中通过request.getParameter(“变量名”)接收参数。

第二节_JSP内置对象

JSP内置对象无需创建就可以直接使用,具体有以下几种:

  • 输出输入对象:request对象、response对象、out对象
  • 通信控制对象:pageContext对象、session对象、application对象
  • Servlet对象:page对象、config对象
  • 错误处理对象:exception对象

JSP内置对象作用域

作用域 说明
page 只能在当前页面中访问
request 整个请求周期,从发起请求到返回响应。(期间可能forward跳转了多个页面)
session 整个当前会话,从打开浏览器开始,到关闭浏览器都算一个session
application 整个应用期,从服务器启动应用,到应用结束(对象可被所有用户共享)

request对象

  • 当客户端通过HTTP请求JSP页面时,服务器会自动创建request对象,并将请求信息封装进去。处理完请求后,request对象即自动销毁。

  • 常用方法:(注意区分参数和属性)
    String getParameter(String name):获取客户端传送给服务器的参数值(如form表单中的内容)
    void setAttribute(String name,Object obj):服务端自己设置request属性值(便于在页面间传数据)
    Object getAttribute(String name):获取相应属性值(返回Obj类型,要进行强转)

  • 传参数(parameter)的方式:客户端通过form表单(可设置get/post形式)、服务端通过include/forward动作(get形式)。但一般服务端页面间通过属性(Attribute)传信息较常用。

  • request还可获得客户端的IP地址、协议等信息。

response对象

  • 服务器向客户端发数据时,自动创建response对象。response只负责设置响应的头部信息,响应体信息由其他对象设置。

  • 重定向网页:response.sendRedirect("xxx"),与forward的区别:forward仅能站内跳转,重定向可跳转到任何网站;forward带request信息跳转,重定向不带request跳转。

  • 页面定时刷新/跳转:
    response.setHeader("refresh","5"),每隔5s页面自动刷新一次。
    response.setHeader("refresh","5;url=www.baidu,com"),5s后自动跳转到百度页面。

session对象

  • 会话(session)的含义:从用户第一次进入网站,到浏览器关闭期间,称为一次会话。用户第一次进入网站,服务器会生成session id标识不同用户,并将相关信息存储在浏览器,因此第二次访问(不关浏览器)还可识别出是同一用户。

  • session对象可用来传递信息、获取会话属性。

application对象

每个Web程序一个application,只要不关闭服务器,application对象即一直存在。用于保存应用程序中的公有数据(所有的用户共享)。可用来记录访问网站的总人数。


Post Date: 2018-02-13

版权声明: 本文为原创文章,转载请注明出处