- 一、常用的客户端开发技术
- html
- css
- JavaScript
...
- 二、常用的服务器端开发技术
1.servlet(Server Applet)基于Web容器才能提供服务
2.jsp
...
- 三、Servlet
- Servle(Server Applet)是java Servlet的简称,主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet容器对于每个Java WEB应用在启动的时候,Servlet容器都会创建一个ServletContext对象。
一、实现Servlet的三种方式
1.实现Servlet接口
Servlet接口被定义在 javax.servletServlet
实现类需要实现Servlet接口中的五个方法
init() Servlet实例化之后,调用初始化方法(在生命周期范围内只执行一次)
service() 服务方法,对请求进行处理
destroy()销毁方法 从服务中去除Servlet(在生命周期范围内只执行一次)
getServletConfig() 在初始化方法init()方法中使用ServletConfig对象创建ServletContext对象,以便使用次方法返回该参数。
getServletInfo()
2.继承实现了Servlet接口的GenericServlet类(javax.servlet.http.GenericServlet)
继承该类的子类需要继承父类中的service()
3.继承继承了GenericServlet类的HttpServlet类(javax.servlet.http.HttpServlet)
继承该类的子类必须重写doXXX()方法处理业务逻辑/返回响应
- 四、WEB应用程序的目录结构
1.一个项目工程
2.可以存放html.gif.js.css.jsp文件
3./WEB-INF/classes:是来存放编译之后生成的字节码文件(.class文件)
4./WEB-INF/lib:用来存放应用程序需要用到的jar包
5./WEB-INF/web.xml:该文件的名称是部署描述符文件
- 五、Tomcat服务器的目录结构
Tomcat是一个支持Java WEB最小的WEB容器,由Apache提供
Tomcat的适用前提时必须安装JDK
1.bin:存放Tomcat服务器的可执行文件目录(比如启动和关闭Tomcat服务器的一些相关文件)
2.conf:配置文件目录
3.temp:存放即临时的文件
4.lib:存放相关的一些jar包,称为类库文件
5.log:日志文件目录
6.webapps:Web项目(站点)目录
webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用
7.work:存放运行时最终生成的文件
- 六、安装JDK–配置环境变量
1.JAVA_HOME
(JDK所在的根目录)
2.path
(jdk中的bin目录的绝对路径)
3.classpath
(jdk中的lib目录)
- **七、Attribute 和 Parameter **
1.attribute作用域参数
2.parameter请求参数
1.HttpServletRequest类有setAttribute()方法,而没有setParameter()方法
2.一般通过表单和链接传递的参数使用getParameter
3.request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据;request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
4.request.getParameter()方法返回String类型的数据。
- request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部
- request.getAttribute()方法返回Object类型的数据
- 八、会话管理–Cookie和Session
1.进行会话管理的原因
Web应用程序基于HTTP协议
HTTP基于请求/响应模式
-- 所有请求都是相互独立的,无连续性的
HTTP是无连接的协议
-- 限制每次连接只处理一个请求
HTTP是无状态的协议
-- 协议对于事务处理没有记忆能力
2.会话管理的概念
会话就是一个客户端连续不断地和服务器端进行请求/响应的一系列交互
多次请求间建立关联的方式称为会话管理,或会话跟踪
会话状态,指服务器与浏览器在会话过程中产生的状态信息
3.实现会话管理的过程
当服务器接收到客户端的首次请求时,服务器初始化一个会话并分配给该会话一个唯一标识符
在以后的请求中,客户端必须将唯一标识符包含在请求中,服务器根据此标识符将请求与对应的会话联系起来
4.会话管理–使用Cookie
1.创建Cookie对象
调用Cookie的构造方法,给出Cookie的名称和Cookie的值,二者都是字符串
Cookie c = new Cookie(“ ”, ” ”)
2.设置最大时效
如果要告诉浏览器将Cookie存储到磁盘上,而非仅保存在内存中,使用setMaxAge方法(参数为秒数)
c.setMaxAge(60*60*24*7)//一周(正数)
3.将Cookie放入到HTTP响应中
使用response.addCookie(c)
如没有这一步,将不会有任何Cookie被发送到浏览器
5.cookie中的一些方法
1.getMaxAge()/setMaxAge()
读取/设置Cookie到期时间(秒)
如果值为0,表示删除对应的Cookie
如果值为负数,表示Cookie只适用于当前的浏览会话
默认值为-1
2.getName()
读取Cookie的名称。不存在setName方法
3.getValue()/setValue()
读取/设置与Cookie关联的值
如果重新设置了某Cookie的值,需要用addCookie()方法将其发送回去
6.会话管理–使用Session
1.获取一个与请求相关联的会话
HttpSession session = request.getSession();
2.从Session中设置或获取一个属性
session.setAttribute(“userName”,userName);
session.getAttribute(“username”);
3.根据需要关闭会话
session.invalidate();
通常客户端不提供结束会话的通知,而是Servlet容器在用户处于一段非活动期后就会自动的使会话失效——这个时间段称为会话的超时期
7.会话时效
Session对象失效:当用户超出指定会话期时间处于非活动状态时,会话自动结束
setMaxInactiveInterval(),设置会话的超时期
通过web.xml的<session-timeout>标签设置
使用方法invalidate()
Cookie失效
默认关闭浏览器Cookie消失
在web.xml中设定存储Session ID的Cookie存活期限
8.Session相关的一些方法
1.getAttribute()
从会话对象中提取出一个之前存储的属性值
如果没有找到与名称相关联的值,则返回null
2.setAttribute()
设置会话对象的属性名称和属性值
3.removeAttribute()
移除与名称关联的值
4.getAttributeNames()
返回会话中所有属性的名称
5.getId()
返回唯一的标识符
6.isNew()
确定会话对于客户来说是否为新创建
7.getCreationTime()
返回会话创建的时间
8.getLastAccessedTime()
返回客户端最近一次发送请求的时间
9.getMaxInactiveInterval()、setMaxInactiveInterval()
取得或设置会话的超时期
10invalidate()
废弃当前的会话
9.URL重写
当用户浏览器禁用Cookie时,仍打算运用Session来进行会话管理,可以对所有的URL使用URL重写
- 九、JSP(Java Server Pages)
- 必须依附项目
- JSP文件与WEB-INF是同级目录
1.JSP的组成(HTML文件+Java片段+JSP标签)
- JSP文件必须包括
<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8“ %>
3.JSP页面元素(6种标签元素)
1.<%@ %>
伪指令用来设置全局变量,声明类、要实现的方法以及输出内容的类型等
注意:
page:指定整个JSP页面的全局属性
include:通知jsp页面,内嵌指定页面,利用include可以将复杂的页面拆分成简单的页面
taglib:允许JSP页面开发者自定义标签
2.<%! %>
声明指令包括的是一段java代码
可以生命全局的变量、方法
3.<% %>
脚本指令是镶嵌在JSP页面中的java代码
可以声明聚局部变量、方法
4.<%= %>
表达式指令是JSP提供的一种简单方法用于访问可用的Java取值或其他表达式,还可用于给动作指令动态传递参数
注意:表达式不能使用分号结尾
错误写法:<%=name;%>
6.JSP生命周期(7个阶段)
1.转换:将JSP源文件转换成对应的Servlet源文件
2.编译:将Servlet源文件即Java源文件编译生成字节码文件(.class)
3.装载:加载至内存
4.创建:创建一个Servlet类实例对象
5.初始化:调用_jspInit()方法,最终调用Servlet类的init()方法初始化
6.服务:调用_jspService()方法,最终调用Servlet类的service()方法,将请求和响应传递进行应的doXXX()方法。
7.销毁:调用_jspDestroy()方法,最终调用Servlet类的destroy()方法,销毁Servlet
5.JSP九大内置对象及含义
1.out:客户端打开的输出流
2.request:为多个应用程序保存信息
3.response:为每个用户保存信息
4.session:封装客户端HTTP请求信息
5.application:封装返回HTTP客户端响应信息
6.page:JSP对应实现类实例,JSP本身
7.pageContext:封装JSP上下文信息,管理JSP作用域中对象的访问
8.config:表示Servlet的配置,只在JSP页面中有效
9.exception:表示运行时异常,将导致调用错误页面
- 十、过滤器Filter
1.过滤器的概念
过滤器是一个用于拦截数据源和数据目的地之间消息的一个对象
2.过滤器功能
分析请求,把请求发送给目的资源或者过滤器自身创建一个响应返回
在请求发送到服务器端之前过滤器需要处理请求,设置请求消息,将请求封装成符合规则的对象
在相应到达客户端志强处理响应,将响应封装成符合规则的对象
3.过滤器的执行
处理请求时采用以下三种行动之一
1.过滤器自身产生一个响应,发送给客户端
2.将请求转发给过滤器链的下一个过滤器,如果是最后一个过滤器,则将请求准发给请求指定资源
3.将请求转发到另一资源
4.编写过滤器的步骤
-编写过滤器的实现类
-在web.xml部署描述符文件中进行配置
-运行
5.过滤器接口中的三个主要方法
init() 初始化过滤器方法,生命周期中只执行一次
doFilter() 处理请求
destroy() 释放过滤器所占用的资源
6.过滤器链的相关执行顺序(和部署描述符文件中的虚拟路径有关)
加载顺序:web.xml文件中<filter-mapping>的倒序
拦截顺序:web.xml文件中<filter-mapping>的正序
销毁顺序:web.xml文件中<filter-mapping>的倒序
7.Servlet容器可以在同一个Filter对象运行多个线程来同时处理多个请求。
8.Filter在web.xml中的配资
<filter>
<filter-name> </filter-name>
<filter-class> </filter-class>
<description> </description>
<init-param>
<param-name> </param-name>
<param-value> </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> </filater-name>
<url-pattern> </url-pattern>
</fliter-mapping>
- 十一、监听器–Listener
1.概念
监听器接口监听另一个Java对象的方法调用或者属性更改
2.application作用域的两大监听器
单个Web站点的资源都共享一个
ServletContextLinstenr(存取全局对象,初始化变量)
该监听器中的方法:
ContextInitialied() 接收对应的ServletContextEvent事件
ContextDestroyed() 从容器中移除时调用
对应的监听器事件是ServletContextEvent,它的主要方法:
getServletContext()
ServletContextAttributeListener
该监听器中的方法:
attributeAdded(ServletContextAttributeEvent e) 有对象加入Application范围
attributeReplaced(ServletContextAttributeEvent e) 在Application的范围,有对象取代另一个对象
attributeRemoved(ServletContextAttributeEvent e) 有对象从Application范围移出
对应的监听器是的事件是ServletContextAttributeEvent,它的主要方法
getName()
getValue()
attributeReplaced()方法中,getName()与getValue()是取之前的值
2.request作用域的两大监听器
ServletRequestListener接口
以及该接口中的方法:
requestInitialized(ServletRequestEvent e)ServletRequest已经被加载及初始化
requestDestroyed(ServletRequestEvent e)ServletRequest已经被销毁
该监听器的事件是ServletRequestEvent,它的主要方法:
getServletContext()
getServletRequest()
ServletRequestAttributeListener接口
该监听器接口的主要方法:
attributeAdded(ServletRequestAttributeEvent e)有对象加入Request范围
attributeReplaced(ServletRequestAttributeEvent e)在Request的范围,有对象取代另一个对象
attributeRemoved(ServletRequestAttributeEvent e)有对象从Request范围移出
该监听器的事件是ServletRequestAttributeEvent,它的主要方法
getName()
getValue()
3.session作用域的两大监听器
HttpSessionListener接口
以及该监听器接口中的方法:
sessionCreated(HttpSessionEvent e) 通知正在收听的对象,Session已经被加载及初始化
sessionDestroyed(HttpSessionEvent e)通知正在收听的对象, Session已经被载出
HttpSessionAttributeListener接口
以及该监听器接口中的方法:
attributeAdded(HttpSessionBindingEvent e) 有对象加入Session范围
attributeReplaced(HttpSessionBindingEvent e)在Session的范围,有对象取代另一个对象
attributeRemoved(HttpSessionBindingEvent e)有对象从Session范围移出
来源:https://blog.csdn.net/lkfmiaomiao/article/details/102672671