JAVA Web学习笔记1

来源:互联网 发布:em算法 统计学方法 编辑:程序博客网 时间:2024/06/01 12:53

一、doGet和doPost方法的区别**
(1)浏览器地址栏呈现的结果不同( 表象)
(2)真正的原因在于向服务器端发送请求时的形式是不同的
get请求格式:GET /test/LoginServet?username=hello&password=world HTTP/1.1
post请求格式:POST /test/LoginServlet HTTP/1.1

从表面上来看,二者差别只是地址栏URL参数“?username=hello&password=world”的变化。
从底层来看,POST方法将“username=hello&password=word”不是作为URL发送,而是作为请求体的一部分一起发送给服务器端。如下所示:

            ………………………………            Connection: Keep-Alive            username=hello&password=word

通过浏览器进行文件上传时,一定要使用post方式而绝不能使用get方式(get会限制文件长度,post不限制)。
通过浏览器地址栏输入网址的方式来访问服务器端资源,全部使用的是get方法请求的。

二、JSP与Servlet
1、JSP最终都会转换为Servlet去执行
JSP声明的格式:

<%! int a = 3;%>

脚本段的格式:

<% int a = 3;%>

当服务器讲JSP转换为Servlet时,会将JSP中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量,Servlet是单实例的,这样成员变量的值就只有一个,每个用户都会访问它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。

2、
该指令用于转向页面,在该指令后面的所有代码都没有机会执行,因为页面的流程已经转向另外一个页面了。

3、getParameter方法是getParameterValues方法的特例,表示请求参数值只有一个;如果请求参数值有多个,请使用getParameterValues方法。在多复选框的情况下,需要使用getParameterValues方法来获取用户所选择的复选框的值。

<input type = "checkbox" name = "interest"> football<input type = "checkbox" name = "interest"> basketball<input type = "checkbox" name = "interest"> volleyball

三、request、session和application
1、request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转化为真正的对象)。setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。
2、request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的数据。
3、request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送来的参数值,是客户端和服务器端之间的交互,服务器端要想获得客户端发送过来的数据,就需要使用getParameter方法来获取。没有与getParameter方法对应的setParameter方法。
4、session对象内数据的存活范围就是session对象的存活范围(只要浏览器不关闭,session对象就会一直存在)因此,在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。
5、application是存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application对象只有一个。
6、request、session、application这三个对象的范围是逐个增加的。
request只在一个请求的范围内;session是在浏览器窗口的范围内;application则是在整个服务器的运行过程中。

四、SendRedirect方法
1、HttpServletResponse对象的sendRedirect(String location)方法称作重定向。如果location地址前面加上“/”,则表示相对于Servlet容器的根地址进行请求,即http://localhost:8080;如果location地址前没有加上“/”,则相对于当前请求的URI来寻找地址。通常使用时不加“/”。
2、RequestDispatcher的forward(request,response)方法称作请求转发。实际上,客户端向服务器端发送一个请求。
3、sendRedirect(String location)方法实际上客户端会向服务器端发送两个请求。(1)请求servlet (2)请求重定向指向的页面。因此,sendRedirect方法无法获取之前的页面数据,而forward方法可以。
4、RequestDispatcher是用过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
5、sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。
6、

0 0