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标记打开的文件以外,所有对磁盘文件的读写操作都要经 ...
随机推荐
- java之不修改变量的数据类型的处理方式
- 【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
bzoj1597懒得复制,戳我戳我 Solution: 线性DP打牌\(+\)斜率优化 定义状态:\(dp[i]\)到了位置\(i\)最少花费 首先我们要发现,如果有一个小方块能被其他的大方块包围,其 ...
- 【BZOJ 3451】Tyvj1953 Normal 思维题+期望概率+FFT+点分治
我感觉是很强的一道题……即使我在刷专题,即使我知道这题是fft+点分治,我仍然做不出来……可能是知道是fft+点分治限制了我的思路???(别做梦了,再怎样也想不出来的……)我做这道题的话,一看就想单独 ...
- java 7 升级后,控制面板里找不到java图标了
如果电脑里只装了jre的情况下,好像从java 7 update 9开始,通过java自动升级程序完成升级后,控制面板里的java图标就不见了. 只好重新从java.sun.com上下载最新版的jre ...
- asp.net性能优化之使用Redis缓存(入门)
1:使用Redis缓存的优化思路 redis的使用场景很多,仅说下本人所用的一个场景: 1.1对于大量的数据读取,为了缓解数据库的压力将一些不经常变化的而又读取频繁的数据存入redis缓存 大致思路如 ...
- cookie的安全性问题
HTTP协议: (1)请求组成部分: 请求行:(get或者post请求:请求路径(不包括主机) :http1.1) 请求头:请求头是浏览器交给服务器的一些信息(比较cookie啥的) 请求体:只有po ...
- Hadoop生态圈-Kafka配置文件详解
Hadoop生态圈-Kafka配置文件详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.默认kafka配置文件内容([yinzhengjie@s101 ~]$ more /s ...
- angular模块
深入浅析AngularJS中的模块 模块是AngularJS应用程序的一个组成部分,模块可以是一个Controller.Service服务.Filter过滤器.directive指令,这些都属于模块. ...
- Spring RedisTemplate操作-哈希操作(3)
@Autowired @Resource(name="redisTemplate") private RedisTemplate<String, String> rt; ...
- 你真的理解js的赋值语句么
之前谢亮兄和我一起讨论的一个问题: var a = {}; a.x = a = 3; a 的值是什么. 其实当执行赋值语句的时候,js 的 = 左侧不是原始变量地址,而是一个新值.怎么理解这句话呢? ...