//写了注解,就不用在web.xml里进行注册
@WebServlet(urlPatterns="/my",name="my",loadOnStartup=1,initParams={@WebInitParam(name="aaa",value="ddd")})
HTTP状态码:(404:客户端异常;500:服务器异常;302:重定向异常;200:访问正常405::请求方式不对)
100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。
200-299:表示客户请求成功。
300-399:表示用于已经移走的资源文件,指示新的地址。
400-499:表示由客户端引发的错误。
500-599:表示由服务器端引发的错误。
必须重写doGet(),不然会调用父类的response.sendError(404,"没有该页面");
必须在输出消息前设置状态行(状态行--响应头--空行--消息体)
响应头用于服务器告诉客户端,服务器相关的信息。可以用response.setHeader()进行设置。但是,按照servlet规范,客户端浏览器只能识别特定的
响应头,所以,响应头的设置通常封装成了响应的方法。比如:setHeader(),setContentType(),addCookie(),sendRedirect(),addSession()
response.setHeader("Content-Type","text/html;charset=utf-8") === response.setContentType("text/html;charset=utf-8");
响应消息的消息体内容有两种方式:传回自定义的内容需要使用getWriter()传送普通文本:PrintWriter out = response.getWriter();
或者getOutputStream()方法传送二进制内容:OutputStream out = response.getOutputStream();
验证码防治用户不断暴力登录,主要是为了安全性考虑。
//"/testweb/checkCode?a="+Math.random()清除浏览器缓存
//随机从服务器产生随机数,不会从缓存中去取
//浏览器存在缓存,当客户端浏览器向服务器发送请求时,会将下载的内容在浏览器缓存起来
//如果客户端再次请求服务器的同一个页面,会先看浏览器缓存中是否有下载的资源,
//如果有,会从浏览器缓存中获取资源如果没有,再从服务器下载
$("#codeImg").attr("src","/testweb/checkCode?a="+Math.random());
重定向工作流程:
客户端向服务器发出请求,调用response.sendRedirect()产生响应时,会产生302状态码,同时产生location响应头,在location响应头中指明
新的地址。客户端浏览器在收到响应信息以后,发现时302状态码,会读取location响应头信息,在向服务器发送第二次请求。
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed//重定向不能使用两次
客户端发送GET请求:
1、用户在网页上点击一个超连接 2、用户提交在网页上填写好的表单(method="get",默认为GET提交) 3、用户在浏览器地址栏中输入URL地址并回车
客户端发送POST请求:
<form method="post">
发送大数据的时候,使用POST方法;上传文件时,使用POST方法;发送用户名、密码或其他保密信息的时候使用POST方法
get请求好处是访问静态资源,post请求主要是用来提交表单和上传文件
GET和POST的区别:
1、流格式的区别:
GET方式只有请求行、请求头、空行,没有消息体。在请求行URL后面附加表单数据。
POST方式包括请求行、请求头、空行,消息体。在消息体中描述表单数据。
2、用途的区别:
GET用于资源查找,POST用于数据传输。
3、传输性能的区别:
GET方式只能传输文本数据,POST可以传输文本和二进制数据。
GET方式不能传输大数据,POST可以。
GET请求数据会显示在地址栏,POST数据在消息体中,不会显示在地址栏,相对安全。
GET会缓存数据,POST不会缓存。
URL包含URI