1. Web资源分为主动资源和被动资源,Web文档分为静态文档和被动文档。
2. Web应用程序通常是主动资源与被动资源的混合。
3. 当浏览器发送一个请求,Web服务器就在myserver.com上将请求转发给reportServlet,该Servlet将生成HTML文本并把它发送给浏览器,该Servlet就是一个主动资源。
4. 任何Web应用程序在其WEB-INF目录下都应该有一个部署描述文件,它是一个名为web.xml的文本文件。该文件是一个XML文件,它的最外层是<web-app>,其中包含两个子元素<servlet>和<servlet-mapping>。
5. HTTP请求结构:请求行,请求头,空行,数据。
6. HTTP请求方法
7. 在HttpServlet类中,除定义了service()方法为客户提供服务外,还针对每个HTTP方法定义了相应的doXxx()方法。
8. 所有的doXxx方法都有两个参数:HttpServletRequest对象和HttpServletResponse对象。
9. HTTP方法及相应的处理方法:
11.为实现请求转发,需要使用RequestDispatcher对象,通过ServletRequest接口中定义的getRequestDispatcher()方法得到该对象。
12.HTTP响应的状态行由三部分组成:状态行、响应头、响应的数据。
13.HTTP响应的状态行由三部分组成,各部分由空格分隔:HTTP版本、说明请求结果的相应状态码以及描述状态码以及描述状态码的短语。
14.HTTP定义了许多状态码,常见的状态码是200,它是表示请求被正常处理。
15.Data响应头表示消息发送的日期:Content-Type响应头指定响应的内容类型:Content-Length指示响应内容的长度。
16.调用响应对象的getWriter()方法可以得到PrintWriter对象,调用响应对象的getOutputStream()可以得到ServletOutputStream对象,使用它可以向客户发送二进制数据。
17.Servlet可能决定不直接向浏览器发送响应,而是将相应将重定向到其他资源,这可通过HttpservletResponse接口的sendRedirect()方法实现。
18.在Servlet中直接使用ServletConfig接口对象有两种方法:(1)在servlet中直接使用getServletConfig()方法获得ServletConfig对象;(2)覆盖servlet的Init(ServletConfig config)方法,然后把容器创建的ServletConfig对象保存到一个成员变量中。
19.在Servlet中可以有两种方法得到ServletContext引用:(1)直接使用Servlet的getServletContext()方法;(2)使用getServletConfig()方法得到ServletConfig引用,再调用它的getServletContext()方法。
20.HttpSession接口中定义常用的方法:(1)public String getId()方法,返回为该会话指定的唯一标识符;(2)public long getCreationTime()返回会话创建的时间(3)public long getLastAccessdTime()返回会话最后被访问的时间(4)public boolean isNew()如果会话对象还没有同客户关联,则返回true(5)public ServletContext getServletContext()返回该会话所属的ServletContext对象。
21.<session-timeout>元素中指定的 以分钟为单位的超时期限,0或小于0的值表示会话永不过期,默认为30分钟。
22.Public viod setMaxInactiveInterval(int interval)设置在容器使该会话失效前客户的两个请求之间最大间隔的秒数,参数为负值,表示会话永不失效。
23.Public int getMaxInactiveInterval()返回以秒为单位最大的间隔时间,在这段时间内容器将在客户请求之间保持该会话打开状态。
24.Public void invaliddate()是会话失效并解除绑定到其上的任何对象。
25.Cookie的常用方法:public String getName()返回cookie名称;public String getValue()返回cookie的值。
26.JSP页面元素分类:<%! 声明 %>;<% 小脚本 %>;<%= 表达式 %>;<%@ 指令 %>;<jsp: 动作名 />;${applicationScope.email }(EL 表达式);<%- - 注释 - -%>.
27.指令的三种类型:page指令,include指令,taglib指令。
28.JSP页面生命周期阶段:页面转换、页面编译、加载类、创建实例、调用jspInit()方法、调用_jspService()方法、调用jspDestroy()方法。
29.Page指令的属性:import:导入在JSP页面中使用的Java类和接口列表,其间用逗号分隔;contentType:指定输出的内容类型和字符集;pageEncoding:指定JSP文件的字符编码。
30.JSP使用的隐含变量:application、session、request、response、out、page、pageContext、config、exception。
31.Jsp作用域对象:应用作用域,application,在整个web应用程序中有效;
会话作用域,Session,在一个用户范围内有效;请求作用域,request,在用户的请求和转发的请求内有效;页面作用域,pageContext,只在当前的页面内有效。
32.Sun公司在推出JSP技术后提出了简历Web应用程序的两种体系结构方法,这两种方法分别称为JSP Model1体系结构和JSP Model2体系结构。
33.Model2体系结构又称为MVC(Model-View-Controller)体系结构或MVC设计模式,这种结构将Web应用的组件分为模型,视图,控制器。、
34.JDBC的基本功能包括:建立与数据库的连接;发送SQL语句;处理数据库操作结果。
35.两层模型即客户机/数据库服务器结构,也就是通常所说的C/S结构。
36.三层模型即客户机/应用服务器/数据库服务器结构,即通常所说的B/S结构。
37.加载JDBC驱动程序最常用的方法是使用Class类的forName()静态方法。
38.<Resource>元素各属性的含义:name:数据源名;driverClassName:使用的JDBC驱动程序的完整类名;url:传递给JDBC驱动程序的数据库URL;username:数据库用户名;password:数据库用户口令;type:指定该资源的类型,这里为DataSource类型;maxActive:可同时为该连接池分配的活动连接实例的最大数。
39.监听器可分为三类:ServletContext事件监听器,HttpSession事件监听器,ServletRequest事件监听器。
40.<listener>元素只有一个子元素<listener-class>用来指定监听器类的完整类名。
41.Servlet规范中过滤器一些常见应用:验证过滤器,登录和审计过滤器,数据压缩过滤器,加密过滤器,XSLT过滤器。
42.Struts框架是基于MVC设计模式的Web应用开发框架,它主要包括核心控制器,表单bean,动作对象,JSP页面和配置文件等。
1. 超文本传输协议(Hypertext Transfer Protocol,HTTP)是Web使用的协议,该协议规定了Web客户与服务器之间如何通信。
2. 静态文档:在Web发展的早期,Web文档只是一种以文件的形式存放在服务器端的文档,客户发出对该文档的请求,服务器返回这个文件,这种文档称之为静态文档。
3. 动态文档:动态文档是指文档的内容可根据需要动态生成,动态文档又分为服务器端动态技术和客户动态文档技术。
4.请求参数是随着请求一起发送到服务器的数据,它是以名/值对的形式发送的。
5.JSP是JavaServlet Pages的缩写,含义是Java服务器页面,它与PHP非常相似,只不过页面中的动态部分是Java语言编写的,使用这种技术的文件的扩展名为jsp。
6.当浏览器发送一个请求,Web服务器就在myserver.com上查找myfile.html文件,然后把它返回给浏览器,它是被动资源,又称之为静态资源。
1. 请求响应过程:
Web浏览器首先建立到Web服务器的连接并向服务器发送HTTP请求消息。服务器接收到客户的请求后,对请求进行处理,然后向客户发送回响应。客户接收服务器发送的HTTP响应消息,对消息进行处理并关闭连接。
2. Servlet生命周期的四个阶段:
加载和实例化Servlet;初始化Servlet;为客户提供服务;销毁和卸载Servlet。
3.GET方法和POST方法的区别:
GET方法的资源类型可以是主动也可以是被动的,数据类型为文本型,数据量一般不超过255个字,数据是URL的一部分,在浏览器的URL地址栏中用户可见,数据可以在浏览器的URL历史缓存。POST方法的数据类型是主动的,数据类型是文本或二进制数据,数据量没有限制,数据不是URL的一部分而是作为请求的信息体发送,因此在浏览器的URL地址栏中对用户不可见,数据不能在浏览器的URL历史中缓存。
4.在客户端如果发生下面事件之一,浏览器就向Web服务器发送了一个HTTP请求:用户在浏览器的地址栏中输入URL并按Enter键;用户单击了HTML页面中的超链接;用户在HTML页面中添写一个表单并提交。
5.Web服务器跟踪客户的状态通常有4种方法;使用servlet API的session机制;使用持久的cookie对象;使用URL重写机制;使用隐藏的表单域。
6.使用Httpsession对象的三个步骤:为客户创建或获得与请求关联的会话对象;在会话对象中添加或删除名/值对属性;如果需要可使会话失效。
7.向客户端发送Cookie的步骤:(1)创建cookie对象;(2)设置cookie的最大存活时间;(3)向客户发送cookie对象。
8.理解页面转换的过程:(1)所以的JSP都变成产生的servlet类的一部分(2)所有的JSP小脚本都变成jspService()方法的一部分,在Java语言中不能在方法中定义方法(3)所有的Jsp表达式都成为_jspService()方法的一部分,表达式的值使用out.print()语句输出。
9.静态包含和动态包含的区别:静态包含是在Jsp页面转换阶段将另一个文件的内容包含到当前的Jsp页面中,使用JSP的include指令完成这一功能。语法为:<% include file=”relativeURL”%>;动态包含是通过JSP标准动作<jsp:include>实现的,<jsp:include>动作的功能是把被包含的页面的输出包含到当前页面的输出。该动作格式为<jsp:include page=”relativeURL” flush=”true/false” />
10.JavaBeans就是使用Java语言定义的类,可以在JSP页面中作为JavaBeans使用的情况:(1)JavaBeans应该是public类,并且必须具有无参数的public构造方法(2)JavaBeans类的成员变量一般称为属性,对每个属性访问权限一般定义为private或protected,而不定义为public的,属性名必须以小写字母开头(3)对每个属性通常定义两个public方法,一个是访问方法,另一个是修改方法,他们允许访问和修改JavaBean的属性值。
11.<jsp:useBean>的属性:id:在JSP中bean名称的标识;scope:bean实例的作用域(page,request,session或application,默认值为page);class:bean的Java完整类名;type:指定用来引用bean的类型;beanName:从文件装载的序列化的bean的名称或创建一个新实例的类名。
12.使用MVC色及模式开发Web应用程序可采用如下步骤:定义JavaBean表示数据;使用Servlet处理请求;填写JavaBean对象数据;结果存储;转发请求到JSP页面;从JavaBean对象中提取数据。
13.传统数据库的连接方法:加载驱动程序;建立连接对象;创建语句对象;获得SQL语句的执行结果;关闭建立的对象。
....................................................................
Web.xml文件:
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.model.LoginServlet</servlet-class>
<init-param>
<param-name>greeting</param-name>
<param-value>good morning</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EventTestServlet</servlet-name>
<url-pattern>/eventtest</url-pattern>
</servlet-mapping>
BookqueryServlet.Java
package com.control;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.model.BookBean;
public class BookQueryServlet extends HttpServlet{
Connection dbConnection;
public void init(){
String driver = "org.postgresql.Driver";
String dburl = "jdbc:postgresql://127.0.0.1:5432/bookstore";
String username = "bookstore";
String password = "bookstore";
try{
Class.forName(driver);
dbConnection=DriverManager.getConnection(dburl,username,password);
}catch(ClassNotFoundException e1){
}catch(SQLEXCEPTION e2){}
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String bookid = request.getParameter("bookid");
try{
String sql = "SELECT * FORM books WHERE bookid=?";
PreparedStatement pstmt = dbConnection.prepareStatement(sql);
pstmt.setString(1,bookid);
ResultSet rst = pstmt.executeQuery();
if(rst.next()){
BookBean book = new BookBean();
book.setBookid(rst.getString("bookid"));
book.setTitle(rst.getString("title"));
book.setAuthor(rst.getString("author"));
book.setPrice(rst.getDouble("price"));
book.setPublisher(rst.getString("publisher"));
request.getSession().setAttribute("book",book);
RequestDispatcher view = request.getRequestDispatcher("/showBook.jsp");
view.forward(request,response);
}else{
RequestDispatcher view = request.getRequestDispatcher("/error.jsp");
view.forward(request,response);
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void destroy(){
try{
dbConnection.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
....................................................................
showBook.jsp
<%@ page contentType="textml; charset=gb2312" pageEncoding="gb2312"%>
<jsp:useBean id="book" type="com.model.BookBean" scope="session" />
<html><body>
<table border="0">
<tr><td>书号:</td>
<td><jsp:getProperty name="book" property="bookid"/></td>
</tr>
<tr><td>书名:</td>
<td><jsp:getProperty name="book" property="title"/></td>
</tr>
<tr><td>作者:</td>
<td><jsp:getProperty name="book" property="author"/></td>
</tr>
<tr><td>出版社:</td>
<td><jsp:getProperty name="book" property="publisher"/></td>
</tr>
<tr><td>价格:</td>
<td><jsp:getProperty name="book" property="price"/></td>
</tr>
</table>
</body>
</html>