1.http是一个基于request / response模式的,无状态的协议。
比如,(发送一个请求)http://www.163.com ------>发送到服务器------->(响应)返回一个页面
2.浏览器/服务器 通讯过程
1.发起连接
------------------->
2.发送请求(request)
--------------------->
Browse 3.服务器响应请求(response) Server
<-----------------
4.服务器关闭连接
<--------------------
3.想要启动Tomcat,配置JAVA环境变量: CATALIINT_HOME ( tomcat的路径)
JAVA_HOME ( jdk 的路径)
4. Servlet是JAAVA服务器端编程,运行正在服务器上(Tomcat、Resin、Jetty、Weblogic、WebSphere、JBoss)
(这里用Tomcat)。
5.导出配置文件; Export----->General------>Preferences....
导入(记录配置信息,如JDK.....)
6. 配置一下:可以不用重新部署项目:
Tomcat 的conf目录--->server.xml 中 </Host>标签上面添加:
<Context path="/testWeb" docBase="F:\.metadata\WorkSpace\testWeb\WebRoot" reloadable="true"/>
path:上下文的路径,和访问时 localhost:8080/后面的地址一致。(逻辑路径)
docBase: 当前的文件所在硬盘的位置。(物理路径)
reloadable:true表示修改过...自动启动服务器...
7.Web.xml (deployment descriptor)部署描述符
8. 第一个Servlet程序: Hello World. 修改web.xml
9.我们可以将Servlet看作是嵌套类HTML代码的JAVA类; 可以将JSP看作是嵌套类Java代码的HTML页面。
10. Login.jsp页面
userName: |____________|
userName: |____________| ----------> LoginServlet处理(输出username:XXXX password:XXXXX)11. Get/Post方法之间的差别:
1).浏览器地址栏呈现的结果不同(表象);
2).真正的原因在于向服务区端发送请求时的形式是不同的;
3).get 的请求格式: GET /testWeb/LoginServlet/username=hello&world=world HTTP/1.1
post 的请求格式:POST /testWeb/LoginSErvlet HTTP/1.1
13. 客户端/服务器/Servlet/JSP之间的关系:
浏览器(客户端) -----------> 服务器(Tomcat) ---------> Servlet
<-----------
JSP(JavaServer Pages)深入学习 (April 17,2012)
14. 1).所有的程序操作都是在服务器端执行。网络上传给客户端的仅是得到的结果。
2).Servlet 简化设计,逻辑和界面设计分开,开发更方便。
(servlet)
|
request jsp解析器 | servlet分析器
------------------ ----------> *.jsp ---------->*.java ----------------> *.class
|
| (执行)
<-----------------------------------------------------------------------------------------
response
。编译器指令.(如<%@ page import="java.io.*%> ) <!--XX--> <@--XX-->
。脚本语法.----------------------------------------------------------------> HTML注释 、 隐藏注释、声明、表达式、脚本段
。动作语法. (如 <jsp:forward>,<jsc:include>)
17.JSP声明格式: <%!int a=3;%>
脚本段格式<% int b=3; %>
当服务器将JSP转换为Servlet时,会将JSP中的声明转换为类的成员变量,而将脚本端转换为方法中的局部变量,Servlet是单实例的,
这样成员变量的值就只有一个,每个用户都会访问到它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。
18. 包含指令include :向当前页中插入一个静态文件的内容。
语法:<%@ include file="relativeURL" %> 或 <%@ include file="相对位置" %>
19. page指令用于定义JSP文件中的全局属性。
(无论把<%@ Page%>指令放到JSP文件放到哪个地方,其作用范围都是整个JSP页面。)
20. taglib指令
21. <jsp:forward> 指令用于转向页面,在该指令后面的代码都没有机会执行了,因为页面的流程已经转向另一个页面了。
22. JSP内置对象:
request 请求对象session 会话对象
application 应用程序对象
response 响应对象
pageContext 页面上下文对象
out 输出对象
config 配置对象
page 页面对象
exception 异常对象
23. session.setAttribute(String ,Object);
session.getAttribute();
可以理解为浏览器没关,session一直都在,关了浏览器session销毁。
24. getAttribute:以对象的形式返回特定名称的属性值。
(如果所给名称的属性不存在返回空值...)
25. Request 的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性和属性值, 然后通过getAttribute方法根据属性
获取到与该属性对应的对象值(获取到之后一般都要进行向下类型转换,将属性值转换为真正的对象。)
setAttribute和getAttribute都是在服务器端内部执行的,客户端不知道服务器是否执行过这两个方法。
26. Request 的 getParameter方法的作用是获取到客户端通过表单或者URL请求参数所发送过来的参数。是客户端与服务器端的交互,
服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。没有与getParameter 对应的setPearameter方法。
27. request对象内数据的存活范围就是在request对象存活范围内,当客户端向服务器发送一个请求,服务器向客户端返回一个响应后,该对象就被销毁了;
之后在想服务器发送新的请求时,服务器会创建新的 request对象,该request对象与之前的request对象没有任何关系,因此也无法获得之前的request
对象中存放发任何数据。
28. session对象内的数据存活范围也就是session对象存活的范围(【只要浏览器不关闭,session对象就会一直存在!】)
因此在同一个浏览器窗口中,无论想服务器端发送多少个请求,session对象只有一个。
(part 1)