Java服务器复习笔记
1、Servlet环境配置、导包
环境需要配置:jdk、tomcat服务器
导包:会用到servlet-api.jar
注意:如果使用的是tomcat 9.0,那么在 .xml文件中web-app的version要填写4.0;如果是tomcat7.0,那么就要填写3.0,版本要匹配,不然会导致程序运行错误。
2、Servlet生命周期的具体说明
- 创建一个servlet容器
在服务器启动时,会创建一个servlet容器 - 初始化servlet对象
在服务器接收到客户端发来的请求时,会调用**init()**方法,对servlet对象进行初始化。 - 处理请求中的具体任务
在初始化对象完成之后,会调用service()方法来处理请求中的任务 - 销毁servlet容器,释放占用的资源
在服务器关闭之前,会调用destory() 方法来销毁servlet容器,逐一释放servlet对象,释放占用的资源
3、 配置和使用servlet类和方法
-
实现Servlet接口
直接实现servlet接口
重写servlet中的service()方法servlet接口中doGet没有doPost方法常用,因为doGet方法提交表单的时候会在url显示提交的内容,不安全,而且doGet方法只能提交256个字符(1024字节);反观doPost方法,它是HTTP头键值对,长度不受限制,只能以form形式提交。
-
继承HttpServlet类
标准HttpServlet类实现Servlet接口
重写Servlet接口的service()方法
在Servlet接口的重写方法service()中,调用当前servlet类(HttpServlet)的成员方法service(),这是service()方法的重载
在HttpServlet类的重载方法中,对请求方法进行分类,调用对应的doXXX方法(例如doGet,doPost),这些方法有自己默认的实现内容。
4、表单数据的提交方法(两种)
-
Get方法
get方法的查询字符串会附加在URL后一起发送到服务器特点:get请求可以被缓存,会保存在浏览器的浏览记录中,但是它的长度有限制,不能超过1024字节,而且安全性较低
-
Post方法
post方法的查询字符串在post中单独存在,和http请求一起发送到服务器端。特点:不能缓存,不会保存到浏览器的浏览记录中,长度不受限制,安全性高。
5、请求、响应的基本概念和使用方式,处理请求时需要注意的细节
-
什么是request和response
request是服务器对浏览器的请求的封装,response是服务器对服务器相应的封装。 -
使用方式
add和set方法:
add用来直接添加,set用来进行修改
例如:
//设置请求的编码格式
request.setCharacterEncoding("UTF-8");
//设置相应的编码格式
response.setContextType("text/html;charset=UTF-8");
- 处理一个请求大概分为如下步骤:
//设置请求的编码格式
//设置响应的编码格式
//获取请求中的内容
//处理请求
//创建一个处理请求的业务对象
//返回处理的结果
6、Servlet和JSP的转发和重定向的基本概念和使用方式
转发:一个请求,在服务器上,转交给另一个(多个)servlet去处理的方式,由于转发是在服务器上进行的,所以本地浏览器地址栏不会发生变化,转发的时候,可以将某些特定的数据带到下一个 servlet中去处理很响应
重定向:“两个”请求,不同的请求,由同一个客户端发出,当第一个请求在服务器上的servlet中执行到需要重定向的时候,客户端浏览器,会再次发出一个新的请求给另一个servlet
7、 Cookie和Session的基本概念和使用方式
Cookie技术:将数据存储在浏览器端;
Session技术:将数据存储在服务器端;
特点:能够在多次请求和响应之间共享。
8. JSP基本原理、第三方库(JSTL)的使用
-
jsp简介:jsp核心实质是servlet技术,是后来添加的基于servlet技术的一种扩展技术。
-
如果客户请求的是一个jsp文件,那么jsp引擎就会把该jsp文件转换成servlet的java文件,实质就是用servlet来处理客户端的请求。
-
转换规则:所有非jsp文本(html,xml)都会在_jspService方法中使用out对象输出
所有的<% %>和<%= %>脚本都会在它对应的地方插入到_jspService方法中
所有的jsp注释<%-- --%>都会保留在jsp代码中。
所有的EL,JSTL会被jsp引擎特殊转换。
-
EL表达式(Expression Language)
使用方法:${ key } ,以 ${ 为开始 ,以 } 为结束。与jsp代码的区别:
<%-- <%=xxx %> --%> <!-- 如果没有获取到名叫xxx的变量里面的数据,则直接报错 -->
${xxx} <!-- 此处即使有错,也不会影响后续的执行,也不会有任何提示 -->
用EL表示写的代码,在运行时它会先在page中找需要得到的数据,找不到就会去request中找,还找不到就会去session中找,还没有就去application找,都没有的话就不显示。
举例,获取请求中的数据:
//jsp常规写法
<%=request.getParameter("username") %>
<%=request.getParameter("password") %>
//EL表达式写法:
${param.username}
${param.password}
- JSTL(JSP标准标签库)
准备:两个必备的jar包(standard.jar和jstl.jar)
在jsp页面中引入:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
编写jstl代码:<c:out value="这里是c:out标签中 value属性里面的内容"></c:out>
<c:set var="Test" value="test_value"></c:set> <!-- 默认添加的作用域是 pageContext -->
<c:remove var="Test"/> <!-- 默认删除所有作用域中的 Test -->
<c:remove var="Test" scope="request"/> <!-- 指定删除request作用域中的 Test -->
9. 九个内置对象、四个变量的作用域
-
九大内置对象:
application ,应用程序对象
session ,会话对象
request , 请求对象
response , 响应对象
page , 当前页面对象
pageContext , 页面上下文对象
out , 输出对象
config ,配置对象
exception , 异常对象 -
四个作用域:
page—>request–>session–>application(从小到大)page页面域:该作用域的属性只在当前域有效,无法传递到下一个页面
request请求域:该作用域存的时用户一次请求的信息,服务器返回响应以后就失效了,但是forward方法跳转多个页面时仍然有效。
session会话域:该域的生命周期是从浏览器打开开始到浏览器关闭结束,或者长时间没有活动(tomcat默认30分钟)
application应用域:如果不人为删除的话,生命周期是从服务器启动到服务器关闭。该域里面的属性所有人均可访问。
10. JSP中注释的差异
<%-- --%>是服务器端注释代码;
<!-- -->是客户端注释代码;