Fork me on GitHub

JSP基础(一)

Web应用程序:通过Web访问的应用程序,如淘宝网等。

JavaWeb基础与JSP

软件开发三大方向:

  • 桌面应用程序:QQ、Office等
  • Web应用程序:淘宝、京东等
  • 嵌入式应用程序:安卓、iPhone上的应用程序等

JavaWeb开发属于Java EE方向。

JSP:Java Server Pages,Java服务器端页面,一个简化的Servlet设计,实现了在Java中使用HTML标签。JSP本质上是一种动态网页技术标准,属于Java EE标准。JSP与Servlet一样,也是在服务器端执行的。

静态网页:网页中内容固定,不会更新。需要HTML、CSS等技术即可。

动态网页:网页中内容通过程序动态显示,自动更新。需要HTML、CSS、数据库、一门高级语言(Java、C#、PHP)、客户端脚本知识JavaScript、XML等技术。

主流的动态网页脚本技术:

  • JSP:Java平台,安全性高、跨平台性好,适于开发大型的、企业级的、分布式的Web应用程序。如分布式计算框架Hadoop等。
  • Asp.net:微软的.net平台,简单易学,但安全性和跨平台性差。
  • PHP:简单高效,成本低,开发周期短,适合中小型企业的Web应用开发。常用组合LAMP:Linux + Apache(阿帕奇服务器) + MySQL + PHP。

动态网页的动态指的是能与用户进行交互,如登录时输入正确的用户名与密码,系统会提示登录成功。

Tomcat

Tomcat服务器:

  • Apache Jakarta的开源项目
  • 常见的JavaWeb容器,能解析HTML、CSS、JavaScript等常见的标签语言。
  • JSP、Servlet的容器

Tomcat的目录结构:mark

WEB-INF目录结构:

  • WEB-INF是Java的WEB应用的安全目录。即客户端无法访问,只有服务端可以访问的目录。
  • web.xml为项目部署文件。
  • classes文件夹用于放置*.class文件。
  • lib文件夹用于存放需要的jar包。

JSP页面组成部分

JSP指令

page:位于JSP页面顶端,同样页面可以有多个page指令

mark

ISO-8859-1不支持中文,建议换成UTF-8

include:将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句。

taglib:使用标签库定义新的自定义标签,在JSP页面中启用定制行为。

JSP注释

mark

客户端可见意思是查看网页源代码时可以看到。

JSP脚本注释客户端不可见。

JSP脚本

在JSP页面中执行Java代码。

<% java 代码 %>

JSP声明

在JSP页面中定义变量或方法。

<%! java代码 %>

JSP表达式

在JSP界面中执行的表达式

<%= java表达式 %>

不能以分号结尾。

JSP页面的生命周期

mark

第一次请求一个JSP页面时,首先被执行的是静态方法。

jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。JSP与Servlet始终驻于内存,故响应时间快。

JSP页面内容发生改变后,需要重新编译。

JSP九大内置对象

JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用。

Web程序的请求响应模式

  • 用户发送HTTP请求。(request)
  • 服务器给用户HTTP响应。(respose)

缓冲区:Buffer,内存中一块用来保存临时数据的区域。

表单有两种提交方式

表单:

1
<form name = "regForm" action = "动作" method = "提交方式"></form>
  • get:以明文方式通过URL提交数据,数据在URL中可以看到,最多不超过2KB,安全性低效率高,适合提交数据量小且对安全性要求不高的数据,如搜索、查询等功能。
  • post:将用户提交的信息封装在HTML HEADER内,适合提交数量大、安全性高的用户信息,如注册、修改、上传等。

请求重定向与请求转发

  • 请求重定向:客户端行为,response.sendRedirect(java.lang.String location),括号内为要重定向的地址。从本质上来看等同于两次请求,前一次请求对象并不会被保存,地址栏的URL地址会改变。
  • 请求转发:服务器行为,request.getRequestDispatcher(java.lang.String location).forward(request,response),括号内为要转发的地址。从本质上来看是一次请求,转发后请求对象会被保存,地址栏的URL地址不会改变。

超链接相当于请求重定向。

out

JspWriter类的实例,向客户端输出内容的常用对象。

mark

clear()若抛出异常,则程序立即终止运行,后面的语句不会执行。clearBuffer()不会抛出异常,后面的语句依旧执行。

request

HttpServletRequest类的实例,客户端的请求信息被封装在request对象中,通过它才能了解客户的请求,然后做出相应。request对象具有请求域,即完成客户端的请求之前该对象一直有效。

mark

mark

response

response对象包含了响应客户请求的有关信息,但在JSP中很少直接使用它。它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

mark

PrintWriter对象的输出总是提前于内置out对象。

可以用out.flush()强制out对象的输出在PrintWriter对象的前面。

session

HttpSession类的实例,表示客户端与服务器的一次会话。Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。特定的时间概念

在服务器的内存中保存着不同用户的session,每个用户都有不同的session。

session对象在第一个JSP页面被装载时自动创建,完成后会活期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话

当一个客户访问一个服务器时,可能会在服务器几个页面间切换,服务器用session对象知道这是一个客户。

mark

session对象的生命周期:

创建:当客户端第一次访问某个JSP或Servlet时,服务器会为当前会话创建一个session ID,每次客户端向服务器端发送请求时,都会将此session ID携带过去,服务端会对此session ID进行校验。

活动:

  • 某次会话当中通过超链接打开的新页面属于同一次会话。
  • 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目是属于同一次会话。
  • 除非本次会话的所有页面都关闭后再重新访问,某个JSP或Servlet将会创建新的会话。原有会话还存在,旧的session ID仍存在于服务器端,只不过再也没有客户端会携带它然后交给服务器端校验。

销毁(只有三种方式):

  • 调用了session.invalidate()方法
  • session过期(超时)默认为30分钟
  • 服务器重新启动

设置超时时间的方式:

  • session.setMaxInactiveInternal(…) 单位为s

  • 在web.xml中配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <session-config>

    <session-timeout>

    10

    <session-timeout>

    <session-config>

    单位为min。

application

  • 实现了用户间数据的共享,可存放全局变量
  • 开始于服务器启动,终止于服务器关闭
  • 在用户的前后连接或不同的用户间的连接中,可以对application对象的同一属性进行操作。
  • 在任何地方对application对象属性的操作,都会影响到其他用户对它的访问。
  • ServletContext类的实例。

mark

page

mark

pageContext

mark

mark

config

mark

exception

mark

-------------本文结束感谢您的阅读-------------
undefined