javaweb笔记三
//写了注解,就不用在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
javaweb笔记三的更多相关文章
- JavaWeb笔记三、MVC 设计模式
一.通过 MVC 进行查询和删除操作 1. 准备一个数据表(examstudent) 2. 创建一个 查询 页面(test.jsp) 通过连接进入 Servlet(listAllStudents.ja ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- Mastering Web Application Development with AngularJS 读书笔记(三)
第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...
- Python 学习笔记三
笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像arg ...
- 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现
本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- 构建高性能WEB站点笔记三
构建高性能WEB站点笔记三 第10章 分布式缓存 10.1数据库的前端缓存区 文件系统内核缓冲区,位于物理内存的内核地址空间,除了使用O_DIRECT标记打开的文件以外,所有对磁盘文件的读写操作都要经 ...
随机推荐
- SECD machine
SECD machine 对程序语言理论的理解 程序语言理论主要研究语法.语义及语言的实现.编程语言有语法,各种数学逻辑.结构化数据都有语法.乔姆斯基的语言体系及巴科斯范式是语法分析的基础,语法分析将 ...
- python编码与存储读取数据(数组字典)
Camp时在python2的编码上坑了不少. 理解pyhon2的编码 python2字符串类型只有两种: str类型:b'xxx'即是str类型, 是编码后的类型,len()按字节计算 unicode ...
- POJ2125 Destroying The Graph
题目链接:ヾ(≧∇≦*)ゝ 大致题意: 给出一个有向图D=(V,E).对于每个点U,定义两种操作a(u),b(u) 操作a(u):删除点U的所有出边,即属于E,操作花费为Ca(u). 操作b(u):删 ...
- Redis的持久化数据
Redis支持两种持久化:RDB和AOF模式 一.名词解释: RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot).AOF:持久化记录服务器执行的 ...
- 个推Node.js 微服务实践:基于容器的一站式命令行工具链
作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 1. 每次新建项目都需要安装一次依赖,这些依赖之 ...
- linux c 编程 ------ 常见函数
fork():创建一个进程 exec():停止当前进程中程序的执行,让当前进程执行另一个程序 access():查看是否有操作文件的权限,可以用来判断一个文件是否存在 pipe():无名管道,用在父子 ...
- xen list_domains stat 解析
XenServer中可以使用list_domains命令来查看所有VM以及Dom0的运行状态以及简单的资源消耗,如下: [root@xenserver ~]# list_domains id | uu ...
- C语言复习---获取最小公倍数(公式法:两个数相乘等于最小公倍数乘以最大公约数)
公式法:两个数相乘等于最小公倍数乘以最大公约数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib ...
- SQL记录-PLSQL-DBMS输出
PL/SQL DBMS输出 DBMS_OUTPUT是一个内置的软件包,能够显示输出显示调试信息,并从PL/ SQL块,子程序,包和触发器发送消息.我们已经使用这个包在我们所有的教程中. 让我们来看 ...
- Java 在匿名内部函数中为外部函数变量赋值的解决方案
Java匿名内部函数本人不怎么主动使用,但是经常会调用一些API,其中会调用一些接口,而这些接口是需要使用匿名内部类来实现的,于是就遇到了一些问题. 就比如okHttp3 的接口调用 OkHttpCl ...