java web程序设计
Servlet概述
Servlet基本知识Servlet是Java EE架构中的关键组成
第一个Servlet
1.编码:创建一个类,继承Http Servlet重写do Get(),do Post()方法
2.配置:在web,xml中配置该Servlet的访问路径
Servlet的生命周期
init():用于Servlet初始化。当容器创建Servlet实例后,会自动调用此方法。
service():用于服务处理。当客户端发出请求,容器会自动调用此方法进行处理,并将处
理结果响应到客户端。
destroy():用于销毁Servlet。当容器销毁Servlet实例时自动调用此方法,释放Servlet实例,清除当前Servlet所持有的资源。
Servlet生命周期阶段 1.装载Servlet 2.创建Servlet实 3.初始化 4.服务 5.销毁
Servlet数据处理
1.读取表单数据
2.处理HTTP请求报头
3.设置HTTP响应报头
Servlet会话跟踪
会话跟踪包括哪几种
Cookie技术Session技术
URL重写技术
隐藏表单域技术
Cookie
Cookie的安全机制
1.Cookie不会以任何方式在客户端被执行
2.浏览器会限制来自同一个网站的Cookie数目
3.单个Cookie的长度是有限制的
4.浏览器限制了最多可以接受的Cookie数目
作用获取请求携带的cookie。语法
${kie的name}
Sessionjsp创建
Session的定义
Session是在Java Servlet API中引入的一个非常重要的机制,用于跟踪客户端的状态,即在一段时间内,单个客户端与Web服务器之间的一连串的交互过程称为一个会话。Session的使用
setAttribute()方法:用于在Session对象中保存数据,数据以Key/Value映射形式存放
getAttribute()方法:从Session中提取知道Key对应的Value值
创建HttpSession对象有以下两种方式
getSession():返回当前请求的会话,如果该会话对象不存在则创建一个新会话。
getSession(boolean create):返回当前请求的会话。如果当前请求不属于任何会话,而且create参数为true,则创建一个会话, create参数为false则返回null。
URL重写
ServletContext生命周期
1.新Servlet容器启动的时候,服务器端会创建一个ServletContext对象;
2.在容器运行期间ServletContext对象一直存在;
3.当容器停止时,ServletContext的生命周期结束。
ServletConfig接口
1.Servlet容器初始化一个Servlet对象时,会为该Servlet对象分配一个。
2.ServletConfig对象。
3.ServletConfig对象包含Servlet的初始化参数信息,它与ServletContext关联。
4.获得初始化参数也可以通过使用ServletConfig对象中的。
JSP基础
JSP引言
JSP(Java Server Pages),它是基于Servlet的扩展技术。其作用是简化JavaWeb
应用中动态页面的开发。说白了,JSP就是用来替换View类型的Servlet。
第1个JSP程序的开发
1.搭建环境
1. 新建一个web项目
2. 导入jar包 jsp-api.jar
3. 新建jsp文件,所有的jsp文件名以.jsp后缀结尾2.编码jsp由html和java代码组成。
3.测试
jsp访问方式:ip地址:port/项目名/jsp路径
JSP中的脚本
1.HTML标签(就像在html文件中使用标签的要求一样,直接书写就可以)
-2.Java代码(又称JSP脚本,有多种分类)
输出脚本
1.作用:将其内部java表达式的值,输出到页面
2.语法:<%= java表达式 %>
3.注意:输出脚本中不能以分号结尾,类似于System.out.print();普通脚本
1.作用:可以定义除方法外,其它所有的java代码
2.语法:<% java代码 %>
3.注意:脚本中不能嵌套其它脚本和html标签
声明脚本
1.作用:可以定义方法和属性(变量)
2.语法:<%! java代码 %>
3.注意:声明脚本中的方法和变量,只能在输出脚本和普通脚本中使用
JSP的工作原理
JSP并不能直接运行,当访问jsp时会先将jsp翻译成java,再编译java为class文件,最终运行class生成动态页面。
JSP指令和动作
指令
指令的定义
用来设置和整个JSP网页相关的属性,比如网页的编解码集和session的开启等等。
page
import属性
1.import属性可以在当前JSP页面中引入JSP脚本代码中需要用到的其他类。
2.如果需要引入多个类或包时,可以在中间使用逗号隔开或使用多个page指令
contentType属性
2.通过设置contentType属性,可以改变JSP输出的MIME类型,从而实现一些特殊的功能。
session属性
session属性用于控制页面是否需要使用Session(会话),默认值为“true”,表示使用会话。
errorPage和isErrorPage属性
2.跳转到的页面需要使用isErrorPage属性来指明可以用于其他页面的错误处理。
buffer和autoFlush属性
1.buffer属性用于指定out内置对象向客户端输出内容时使用的缓冲区大小,默认值是8K。可以使用buffer来改变它的大小。
2.通过设置buffer的值为none,可以关闭缓冲区
taglib
1.作用:用来为jsp页面引入jsp标准标签库
2.语法:<%@ taglib uri="标签库的唯一标识" prefix="前缀" %>
include
作用:在当前页面包含其它页面,以达到复用页面的效果。
语法:<%@ include file="其它页面路径" %>动作
include动作
1.作用:在当前页面包含其它页面,作用和include指令类似
2.语法:<jsp:include page="其它页面路径"/>
3.包含指令(静态包含)和包含动作(动态包含)的区别:
forward动作
作用:从当前jsp页面请求转发到另外一个jsp页面
语法: <jsp:forward page="另外一个页面的路径"/>
JSP内置对象
九大内置对象
request
HttpServletRequest
客户端的请求,包含所有从浏览器发往服务器的请求信息
常用方法
1.String getParameter(String name):根据参数名称得到单一参数值;
2.String[] getParameterValues(String name):根据参数名称得到一组参数值;
3.void setAttribute(String name, Object value):以名/值的方式存储数据;
4.Object getAttribute(String name):根据名称得到存储的数据。
session
HttpSession
会话对象,表示用户的会话状态
常用方法
1.void setAttribute(String name, Object value):以名/值的方式存储数据;
2.Object getAttribute(String name):根据名称得到存储的数据。
response
HttpServletResponse
返回客户端的响应
常用方法
1.void setContentType(String name):设置响应内容的类型和字符编码;
2.void sendRedirect(String url):重定向到指定的URL资源。
application
ServletContext
应用上下文对象,作用于整个应用程序
常用方法
1.void setAttribute(String name, Object value):以名/值的方式存储数据;
2.Object getAttribute(String name):根据名称得到存储的数据。
3.在application中存储值
4根据名称“number”取出了存储在application中的数据
page
相当于java中this,表示当前页面
page对象表示JSP页面的当前实例,实际上相当于this,可以提供对JSP页面上定义的所有对象的访问。实际开发中很少使用page对象
out 输出流,向客户端输出数据
常用方法
print()、println()和write()
其它方法
1.void clear():清除缓冲区的内容,如果缓冲区已经被刷出(flush),将抛出IOException ;
2.void clearBuffer():清除缓冲区的当前内容,和clear()方法不同,即使缓冲区已经flush,也不会发生异常;
3.void flush():输出缓冲区中的内容;
4.void close():关闭输出流,清除所有内容。
exception
异常对象,注意只能在isErrorPage="true"的页面使用
exception对象表示JSP页面中的异常信息。需要注意的是要使用exception对象,必须将此JSP中page指令的isErrorPage属性值设置成true
发生异常的界面需要指明那个页面处理异常config (ServletConfig)
表示jsp页面的一些初始配置
常用方法
1.String getInitParameter(String name):返回指定名称的初始参数值;
2.Enumeration getInitParameterNames():返回所有初始参数的名称集合;
3.ServletContext getServletContext():返回Servlet上下文;
4.String getServletName():返回Servlet的名称。
pageContext
1.可以获取其它8个内置对象
2.作用域对象
3.可以操作其它3个作用域
子主题2
1.void setAttribute(String name, Object value):以名/值方式存储数据
2.Object getAttribute(String name):根据名称得到存储的数据
EL和JSTL
EL表达式
el表达式作用
用于从作用域中获取数据,并输出到页面,替换输出脚本
el从作用域获取简单数据
简单数据:基本类型+String类型
语法: ${命名属性名字} //默认按作用域范围从小到大搜索
el从作用域获取复杂数据
复杂数据:自定义对象类型
语法:${作用域标识.命名属性名.子属性名}注意:一旦写错属性名,访问会出现异常El表达式的运算符
数学运算符+, -, *, /或div, %或mod
比较运算符==或eq,!=或ne,>或gt,<;或lt,>=或ge,<=或le
说明:el中的==和!=是根据对象内容进行判断
逻辑运算符and或&&,or或||,not或!
三目运算符
boolean值 ? 值1:值2
empty
> ${empty 命名属性名 } //判断数据是否为空
注意:String类型的数据,如果为null或者空串结果都为true
El表达式中的内置对象
在el表达式中可以直接使用,无需手动创建的对象
pageContext
el中的pageContext和jsp中的pageContext类型不同,不是同1个对象,el中pageContext的底层依赖于jsp中的pageContext。作用
可以获取jsp中的8个内置对象
${quest }${sponse }${pageContext.session }
${pageContext.servletContext }
${pageContext.page }${pageContext.out }
${ption }${pageContext.servletConfig }
典型应用
获取当前应用的项目名
Servlet: ContextPath();
el: ${tPath}
param
作用:用来在jsp页面获取请求中携带的数据(等同于servlet收参)。
语法:${param.参数名}
cookie
作用:获取请求携带的cookie。语法:${kie的name}
JSTL
jsp标准标签库,和el表达式配合在页面上输出数据。
JSTL的使用步骤
1.导入jar包
2.在页面导入jstl标签库 (类似于在Java中导包)
3.在页面使用jstl标签库
输出单个数据
直接使用el表达式
有条件的输出数据
if标签
core标签库中没有if else标签
choose when
多个when条件自上而下判断,如果有某个条件判断后满足要求,则执行标签体中内容,且不再进行后续的判断。当所有when条件不满足时,执行otherwise中的代码。choose-when执行流程和java中if-else-if相同。
输出多个数据(数组|集合)
遍历数组、List和Set
数组、List、Set遍历方式没有区别
遍历Map 下标遍历
格式化标签库
引入格式化标签库,格式化输出日期
使用EL和JSTL代替java脚本
学习完EL和JSTL后,jsp中不允许在出现任何一行java脚本。项目名使用${tPath}获取回显数据使用el表达式+jstl
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论