北京圣思园jsp笔记张龙(风中叶)JavaWebLesson11.HTML(HyperTextMarkupLanguage),超文本标记语言。HTML文件的后缀名一般是:.htm,.html2.表单(form):3.浏览器内核:WebKit,trident4.CSS定义的语法:selector{property:value}5.Http是一个基于请求/响应模式的,无状态的协议(request/responsebased,statelessprotocol)JavaWebLesson21.浏览器与服务器连接的一般过程:2.当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源3.Tomcat环境变量的配置:4.Tomcat、Resin、Jetty、Weblogic、WebSphere、JBoss5.在Tomcat安装目录的conf目录下打开server.xml文件,找到倒数第四行/Host,在/Host上面加入如下XML片段:6.启动Tomcat(startup.bat),打开浏览器,访问如下地址:(deploymentdescriptor),部署描述符8.我们可以将Servlet看作是嵌套了HTML代码的Java类;可以将JS看作是嵌套了Java代码的HTML页面。9.get与post方法之间的差别:1)浏览器地址栏呈现的结果不同(表象)2)真正的原因在于向服务器端发送请求时的形式是不同的3)get的请求格式:4)post的请求格式:10.通过浏览器进行文件上传时,一定要使用post方式而绝不能使用get方式。11.通过浏览器地址栏输入网址的方式来访问服务器端资源,全部使用的是get方法请求的。12.客户端、服务器与Servlet/JSP之间的关系JavaWebLesson31.课堂练习:2.JSP执行流程:3.JSP执行详细流程:4.JSP最终都会转换为Servlet去执行。5.JSP声明的格式:%!inta=3;%,脚本段的形式:%intb=3;%,当服务器将JSP转换为Servlet时,会将JSP中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量,Servlet是单实例的,这样成员变量的值就只有一个,每个用户都会访问到它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。6.JSP包含(include)7.jsp:forward指令用于转向页面,在该指令后面的所有代码都没有机会执行了,因为页面的流程已经转向了另外一个页面了。8.getParameter方法是getParameterValues方法的特例,表示请求参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。JavaWebLesson41.request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。2.request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。没有与getParameter方法对应的setParameter方法。3.request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。4.session对象内数据的存活范围也就是session对象的存活范围(?只要浏览器不关闭,session对象就会一直存在?),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。5.application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application对象只有一个。6.request、session以及application这3个对象的范围是逐个增加的:request只在一个请求的范围内;?session是在浏览器窗口的范围内?;application则是在整个服务器的运行过程中。JavaWebLesson51.HttpServletResponse对象的sendRedirect(Stringlocation)方法称作重定向。如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,即,如果location地址前没有加上“/”,则表示相对于当前请求的URI来寻找地址。2.RequestDispatcher的forward(request,response)方法称作请求转发。3.请求转发与重定向的区别。1)请求转发,整个过程处于同一个请求当中2)重定向。实际上客户端会向服务器端发送两个请求。3)RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。4)sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。5)重定向在FireBug中的示意图4.练习(投票管理系统)项目执行流程:1.出题目1)设定题目名称2)设定选项数量以及每个选项的名称3)设定投票的类型(单选,多选)2.投票5.MVC设计模式(Model模型View视图Controller控制器)。6.JavaBean的规范要求7.一个典型的JavaBean8.JSP访问JavaBean的语法JavaWebLesson61.可以在jsp:setProperty中通过param参数为bean的属性动态赋值。2.对应的Servlet代码是:3.JavaBean的存活范围:4.当将JavaBean放在session范围内时生成的Servlet源代码是:5.当将JavaBean放在application范围内时生成的Servlet源代码是:5.每一个Servlet都必须要实现Servlet接口,GenericServlet是个通用的、不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们定义的Servlet只需要继承HttpServlet父类即可。6.Servlet接口中定义了一个service方法,HttpServlet对该方法进行了实现,实现方式就是将ServletRequest与ServletResponse转换为HttpServletRequest与HttpServletResponse6.转换完毕后,会调用HttpServlet类中自己定义的service方法,如下所示7.在该service方法中,首先获得到请求的方法名,然后根据方法名调用对应的doXXX方法,比如说请求方法为GET,那么就去调用doGet方法;请求方法为POST,那么就去调用doPost方法。8.在HttpServlet类中所提供的doGet、doPost等方法都是直接返回错误信息,所以我们需要在自己定义的Servlet类中override这些方法10.源码面前,了无秘密11.Servelt核心API之间的关系UML图:12.Servlet的启动JavaWebLesson71.对于Tomcat来说,它会将客户传递过来的参数放在一个Hashtable中,该Hashtable的定义是:这是一个String-String[]的键值映射。2.某些Servlet在web.xml文件中只有servlet元素而没有servlet-mapping元素,这样我们就无法通过url地址的方式访问这个Servlet了,这种Servlet通常会在servlet元素中配置一个load-on-startup子元素,让容器在启动的时候自动加载该Servlet,并且调用其init方法完成一些全局性的初始化工作。3.Servlet的多线程同步问题:Servlet本身是单实例的,这样当有多个用户同时访问某个Servlet时,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入操作,那就会导致Servlet的多线程问题,即数据不一致。4.解决Servlet多线程同步问题的最好方案:去除实例变量,使用局部变量5.Servlet是纯Java语言,擅长于处理流程和业务逻辑。6.Session的原理图JavaWebLesson81.过滤器(Filter):1)Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。2)Servlet过滤器能够在Servlet被调用之前检查Request对象,修改RequestHeader和Request内容;3)在Servlet被调用之后检查Response对象,修改ResponseHeader和Response内容。Servlet过滤器负责过滤的Web组件可以是Servlet、JSP或HTML文件。2.过滤器的过滤过程:1.过滤器的链式请求处理过程(FilterChain)JavaWebLesson111.每一个函数对象都有一个length属性,表示该函数期望接收的参数格式。它与函数的arguments不同,arguments.length表示函数实际接收的参数格式。2.JavaScript中有五种原始数据类型:Undefined、Null、Boolean、Number以及String。3.Undefined数据类型的值只有一个:undefined。4.Null数据类型的值只有一个:null。5.Boolean数据类型的值有两个:true和false。6.JavaScript中没有char数据类型。7.typeof是一元运算符,后跟变量的名称,用于获取变量的数据类型,其返回值有5个:undefined、boolean、number、string以及object。8.在JavaScript中,如果函数没有声明返回值,那么会返回undefined。9.null与undefined的关系:undefined实际上是从null派生出来的。10.强制类型转换:在JavaScript中有3种强制类型转换:Boolean(value),Number(value),String(value)。11.在JavaScript中,对于函数中定义的变量来说,加var表示局部变量,不加var表示全局变量。12.在JavaScript,所有对象都是从Object对象继承过来的。Object中的属性是不可枚举的(propertyIsEnumerable返回false),因此无法通过for„in语句得到其中的属性。13.在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性。14.在JavaScript中定义对象的第二种方式:15.对于JavaScript