验证码:
1. 长度为5;从“A-Z;0-9.”中选取。
注册:
用户填写表单(用户名,真实姓名,密码,性别),服务器端按照如下流程进行处理:
first:先检验验证码是否正确。不正确,提示用户。
1.检查用户名是否存在,如果存在,提示用户。不然进行下一步。
2.将用户提交的信息插入数据库,然后跳转到登陆页面。
2.过滤器
(1)什么是过滤器?
servlet规范当中定义的一种组件;用来拦截容器的调用过程。
(2)如何写一个过滤器?
a .写一个java类,实现Filter接口。
b.在doFilter方法里实现拦截处理逻辑。
c.配置过滤器(web.xml).
(3)过滤器的优先级
当有多个过滤器都满足过滤条件
则容器依据<filter-mapping>的先后顺序来调用过滤器。
练习:
写一个过滤器,检查评论的字数,如果超过20个;评论长度字数过多。
(4)过滤器初始化参数
a.配置初始化参数
b.读取
FilterConfig.getInitParamter("");
(5)过滤器的优点。
a.在不修改原代码的基础上,增加新的功能。
b.可以将多个组件相同的处理逻辑集中写在过滤器里,方便代码维护。
监听器:
(1)什么是监听器?
servlet规范当中定义的一种特俗的组件,用来监听容器产生的事件;
注:
主要两大类事件
1)生命周期相关的事件:
容器创建或者销毁了request,session,servlet上下文产生的事件。
在线人数。
2)绑定数据相关的事件:
容器条用了request,session,servlet上下文的setAttribute,
removeAttribute方法。
(2)什么是servlet上下文?
容器启动之后会为每个web应用创建唯一的一个符合ServletContext接口要求的对象。
特点:
a.唯一性
一个web应用,对应一个上下文;
b.持久性 只要应用不被卸载,容器不被关闭就一直存在。
2) 如何获得servlet上下文。
GenericServlet,ServletConfig,FilterConfig,HttpSession
都提供了getServletContext方法。
3)servlet上下文的作用
a.绑定到上下文的数据,会一直存在。
request<session<Servlet上下文。
b.绑定到上下文的数据可以被所有用户共享.
c.可以用上下文访问全局的初始化参数。
访问全局的初始化参数:
1.配置:<Context-param><param-name><param-value>
2.访问:ServletContext.getInitParameter();
如何写一个监听器?
1.写一个java类,依据要监听的事件类型实现相应的接口:
2.在监听器接口方法中,实现监听处理逻辑。
3.注册(web.xml)
统计在线人数.
1.HttpSessionListener
2.ServletContentListener
3ServletRequestListener
2.线程安全问题
(1)为什么说Servlet会有线程安全问题?
a.容器在默认情况下,对于一个类型的servlet,只会创建一个实例。
b.容器收到请求之后,会启动一个线程来处理该请求。
比如:有多个请求访问同一个servlet,则会有多个线程调用servlet对象的service方法。
有可能出现线程安全问题(比如,这些线程要修改servlet的属性)。
(2)如何解决
a.方式一:使用synchronized对有线程安全问题的代码枷锁。
b.让servlet实现SingleThreadModel接口。(不建议使用)
标示接口 注:容器会为实现了该接口的servlet创建多个实例(一个线程分配一个实例)。
Servlet知识小结:
(1)servlet基础:a.什么是servlet?b.如何写一个servlet?c.如何运行的?d.http协议(了解)e.什么是servlet容器?
(2)servlet核心:a.servlet输出中文b.表单包含中文参数如何处理c.如何获得请求参数值 String[] request.getParameterValues(String paramName);
?interest=cooking&interest=snoking.
d.容器如何处理请求资源路径。e.如何将多个servlet合并成一个。
f.转发和重定向。g.servlet的生命周期h.servlet上下文。i.servlet线程安全问题。
(3)状态管理
1.什么是状态管理
2.cookie
a.什么是cookie?
b.如何添加cookie?
c.添加cookie的注意事项:编码问题,生存时间,路径问题。
d.读取cookie
cookie的限制
3.session
什么是session?
如何获得?
session的几个常用方法
session超时
删除session
(4)数据库访问
a.使用jdbc访问数据库。
使用dao访问数据库。
(5)过滤器一监听器
a.什么是过滤器
如何写一个过滤器?
过滤器的优先级
初始化参数
过滤器的优点
什么是监听器
如何写。
(6)典型案例
a.员工管理
b.登陆和session验证
c.验证码
JSP
1.jsp
是如何运行的?
a.容器将jsp转换成servlet类。
html(css,js)--->service方法里面用out.write输出
<% %>--->
java代码?
<%!声明一个变量或方法%>
为新的成员变量或者成员方法。
3.隐含对象?
为什么可以直接使用隐含对象?
有哪些隐含对象?
out,request,response,session,application,
pageContext, exception,config,page.
page (jsp实例本身)。
pageContext
a.容器会为每一个jsp实例创建一个唯一符合PageContext接口要求的对象。该对象会一直存在(除非jsp实例被删)
pageContext的作用
a.作用1:绑定数据(绑定到pageContext上下文的数据,只有对应的jsp实例能访问)
作用2:提供了一些方法用来获得其他所有的隐含对象。
exception
用来获得jsp在运行过程中产生的异常信息。
config
servletConfig 对象
指令
什么是指令?
有哪些指令?
page指令,include指令,taglib指令。 jsp标签。
page指令的属性
import:导包
pageEncoding
contentType
errorPage属性:指定一个异常处理页面。
当jsp运行时产生异常,调用该属性指定的页面。
isErrorPage属性:true/false缺省当值为true时,可以使用exception隐含对象。
session属性:true/false
当值为false,容器不再添加获得session对象的代码(即不能使用session隐含对象。).
include指令
file属性:将file属性指定的文件的内容插入到指令所在位置。
注释:
1)<!--注释的内容 -->
<%--注释的内容--%>
注:如果注释内容是java代码,则第一种注释中java代码会执行。
-------------------------------------------------------------------------