第二章Java Web概述HTTP请求和响应消息:HTTP是Hyper Text Transfer Protocol的缩写,即超文本传输协议。
它是一种请求/响应式的协议,客户端在与服务器端建立连接后,就可以向服务器端发送请求,这种请求被称作HTTP请求,服务器端接收到请求后会做出响应,称为HTTP响应。
HTTP协议特点:支持客户端/服务器模式(C/S);简单快速;灵活;无状态(没有记忆功能)在HTTP中,一个完整的请求消息是由请求行、请求头和实体内容(消息体)三部分组成;一个完整的响应消息主要包括响应状态行、响应消息头和实体内容(响应体)。
HTTP有8种请求方式,常见的是GET、POST(还有HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT)GET和POST的区别:①GET方式地址栏有参数,POST方式地址栏没有参数。
②GET请求有数据大小的限制(大约1KB),而POST没有限制。
③GET请求只能进行url编码,而POST支持多种编码方式。
④POST比GET请求方式更安全。
⑤GET方式通过URL传递参数(?后面为参数),POST方式将表单元素及数据作为HTTP消息的实体内容发送给服务器。
状态码:1xx:表示请求已接收,需要继续处理。
2xx:表示请求已成功被服务器接收、理解并接受。
(200)3xx:为完成请求,客户端需进一步细化请求。
(302,304)4xx:客户端的请求有错误。
(404)5xx:服务器端出现错误。
(500)在Eclipse中配置Tomcat:Tomcat是Apache提供的开源免费的运行Servlet和JSP的容器(引擎)。
Tomcat特点:稳定、可靠、效率高Tomcat默认端口为8080,访问方式为:http://localhost:8080 (localhost也可以是127.0.0.1)第三章Servlet基础开发动态Web资源的相关技术比较常见的有ASP、PHP、JSP和Servlet等。
基于Java的动态Web资源开发,SUN公司提供了Servlet和JSP两种技术。
Servlet是使用Java语言编写的运行在服务器端的程序。
Servlet主要用于处理客户端传来的HTTP请求,并返回一个响应,它能够处理的请求有doGet()和doPost()等方法。
Servlet技术特点:方便、跨平台、灵活性和可扩展性。
在Servlet接口中定义了5个抽象方法,分别是:①void init(ServletConfig config)②ServletConfig getServletConfig()③String getServletInfo()④void service(ServletRequest request,ServletResponse response)⑤void destory()其中init()、service()和destroy()这三个方法可以表现Servlet的生命周期,它们会在某个特定的时刻被调用。
Servlet生命周期(初始化阶段、运行阶段和销毁阶段)如下图:一个Servlet对应一个ServletConfig,多个Servlet对应一个ServletContext(每个Web应用创建唯一的一个ServletContext,实现多个Servlet之间数据共享)。
Servlet的配置方式有两种:写注解和在web.xml中配置。
web.xml配置:<servlet><servlet-name>AServlet</servlet-name><servlet-class>com.hxw.servlet.AServlet</servlet-class></servlet><servlet-mapping><servlet-name>AServlet</servlet-name><url-pattern>/AServlet</url-pattern></servlet-mapping>第四章请求和响应重点掌握HttpServletRequest(封装HTTP请求消息)和HttpServletResponse对象(封装HTTP响应消息)。
getOutputStream()方法获取的字节输出流对象为ServletOutputStream类型getWriter()方法获取的字符输出流对象为PrintWriter类型。
sendRedirect()方法实现重定向,该方法用于生成302响应码和Location响应头,从而通知客户端重新访问Location响应头中指定的URL。
重定向原理图:Request对象不仅可以获取一系列数据,还可以通过属性传递数据,setAttribute()方法和getAttribute()方法等。
转发:request对象调用getRequestDispatcher()方法得到一个RequestDispatcher接口的实例对象,再调用该对象中的forward(ServletRequest request,ServletResponse response)方法(还有个include(ServletRequest request,ServletResponse response)方法)forward()请求转发:include()请求包含:重定向和转发的区别:①转发:浏览器URL的地址栏不变。
重定向:浏览器URL的地址栏改变;②转发是服务器行为,重定向是客户端行为;③转发的速度快;重定向速度慢④转发的是同一次请求;重定向是两次不同请求⑤转发不会执行转发后的代码;重定向会执行重定向之后的代码中文乱码的解决方法:①response.setContentType("text/html;charset=UTF-8");或者response.setHeader("Content-Type","text/html;charset=UTF-8");②request.setCharacterEncoding(“UTF-8”);③修改Tomcat服务器的配置文件:加一个URIEncoding="utf-8"④过滤器Filter设置编码格式第五章会话及其会话技术Cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好地进行数据交互。
Cookie必须以键值对的形式存在,其属性可以有多个,但这些属性之间必须用分号;和空格分隔。
Cookie类有且仅有一个构造方法public Cookie(String name,String value)。
Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任何值,创建后允许被修改。
Cookie技术可以将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享。
Session是一种将会话数据保存到服务器端的技术。
Session对象的ID:JSESSIONIDHttpServletRequest定义了用于获取Session对象的getSession()方法。
在一定时间内,如果某个客户端一直没有请求访问或者用户;浏览器关闭,那么HttpSession对象变成垃圾对象,等待垃圾收集器将其从内存中彻底清除。
如果浏览器超时后,再次向服务器发出请求访问,那么,Web服务器则会创建一个新的HttpSession对象,并为其分配一个新的ID属性。
Cookie和Session的区别:①Session中能够存储复杂的Java对象,Cookie只能存储String类型的对象。
②Session保存在服务器,客户端不知道其中的信息;Cookie保存在客户端,服务端可以知道其中的信息。
③Cookie不是很安全,人可以分析存放在本地的Cookie并进行Cookie欺骗,如果主要考虑到安全应当使用Session。
④Session过多时会消耗服务器资源,如果主要考虑到减轻服务器性能方面,应当使用Cookie;⑤单个Cookie在客户端的限制是3K,就是说一个站点在客户端存放的Cookie 不能3K;第六章JSP技术JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。
JSP特性:①跨平台(一次编译,到处运行);②业务代码相分离(在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开);③组件重用(JSP中可以使用JavaBean编写业务组件);④预编译(第一次访问,服务器对JSP页面进行编译,并且只执行一次编译)。
JSP的工作模式是请求/响应模式,JSP本身也是一个Servlet,运行过程如图:JSP脚本元素是指嵌套在<%和%>之中的一条或多条Java程序代码。
JSP脚本元素主要包含以下三种类型:①JSP Scriptlets:是一段代码段,语法格式如下所示:②JSP声明语句用于声明变量和方法,它以“<%!”开始,以“%>”结束,其语法格式如下所示:③JSP(expression)表达式用于将程序数据输出到客户端,它将要输出的变量或者表达式直接封装在以“<%=” 开头和以“%>”结尾的标记中,其基本的语法格式如下所示:JSP也有自己的注释方式,其基本语法格式如下:JSP指令之page指令,page指令的具体语法格式如下所示:page指令的常见属性中,除了import属性外,其他的属性都只能出现一次,否则会编译失败。
注意:page指令的属性名称都是区分大小写的。
page指令的示例:page指令对整个页面都有效,而与其书写的位置无关,但是习惯上把page指令写在JSP页面的最前面。
JSP指令之include指令——需要在JSP页面静态包含一个文件(如:HTML、txt)时使用,include指令的具体语法格式如下所示:include指令只有一个file属性,该属性用来指定插入到JSP页面目标位置的文件资源。
需要注意的是,插入文件的路径一般不以“/”开头,而是使用相对路径。
JSP的9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。
有:out、request、response、config、session、application、page、pageContext、exception。
pageContext对象的作用范围有4个值:pageContext.PAGE_SCOPE:表示页面范围pageContext.REQUEST_SCOPE:表示请求范围pageContext.SESSION_SCOPE:表示会话范围pageContext.APPLICATION_SCOPE:表示Web应用程序范围在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了<jsp:include>动作元素,<jsp:include>动作元素的具体语法格式如下所示:<jsp:forward>动作元素将当前请求转发到其他Web资源(HTML页面、JSP页面和Servlet等),在执行请求转发之后的当前页面将不再执行,而是执行该元素指定的目标页面。