javaweb基础知识点记录
1、在service方法中,首先获得请求的方法名,然后根据方法名调用对应的doXXXX方法,比如说请求参数为GET,那么就会去调用doGet方法,请求参数为POST,那么就会去调用doPost方法。
2、在HttpServlet类中所提供的doGet,doPost等方法都是直接返回错误信息,所以我们需要在自己定义的Servlet类中来overvide这些方法。
3、对于Tomact来说,它会将客户端传送过来的参数放在一个Hashtable里面,该Hashtable的定义是:
private Hashtable paramHashStringArray = new Hashtable ();
private boolean didQueryParameters = false;
private boolean didMerge = false;
这是一个从String到String[]的映射。
4、某些Servlet在web.xml文件之中只有元素而没有元素,这样我们就无法通过URL地址的方式来访问这个servlet了,这种Servlet通常会在元素中配置一个子元素,让容器可以在启动的时候自动加载该Servlet,并且调用init方法来完成一些全局的初始化工作。
5、ServletContext与web应用之间的关系
当Servlet容器启动应用的时候,并且为每一个web应用创建一个唯一的ServletContext对象,你可以把ServletContext看作是一个web应用服务器组件的共享内存。在ServletContext中可以存放共享数据。
6、Servlet的多线程同步问题,Servlet本身是单实例的,这样当有多个用户访问某一个Servlet时候,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入操作,那就导致Servlet产生多线程的同步问题,即数据不一致的问题。
7、解决Servlet多线程同步问题的最好方案就是,去掉实例变量,使用局部变量。
8、比较Servlet与JSP
a、有许多的相似之处,都可以生成动态的网页。
b、JSP的优点是擅长网页的制作,生成动态的页面,比较直观。JSP的缺点是不擅长追踪和排错。
c、Servlet是纯的java代码,擅长处理流程和业务逻辑。Servlet的缺点是生成动态页面不直观。
9、request.getAttribute()和request.getParameter()方法有什么异同?
a、前者返回Object类型的对象,后者返回String类型的对象。
b、request.getAttribute()和request.setAttribute()相对应。
c、当两个web组件之间为链接关系时,被链接的组件通过getParameter()方法来获取请求参数。
d、当两个web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。
e、request.getParameter()方法传递的数据,会从web客户端传到web服务器端,代表着HTTP请求。
f、requset.setAttribute(0和request.getAttribute()方法之间传递的数据只会存在于web容器的内部,在具有转发关系的web组件之间共享。
10、web服务器跟踪客户状态通常有4种方法。
a、建立含有跟踪数据的隐藏字段。
b、重写包含有额外参数的URL。
c、使用持续的cookie。
d、使用Servlet API中的session机制。
11、session的基本概念,session用于跟踪客户的状态,session指的是在一段时间之内,单个客户与web服务器的一连串的交互过程。在一个session中,客户可能会多次其请求访问同一个网页,也有可能访问不同的服务器资源。
12、session的运行机制
a、当一个session开始时,servlet容器会创建一个HttpSession对象,在HTTPSession对象中可以存放客户状态的信息。
b、Servlet容器会为HTTPSession分配一个唯一的标志符,称为Session ID,Servlet容器会把session ID作为cookie保存在客户的浏览器之中,
c、每次客户发出HTTP请求之时,Servlet容器可以从HttpServletRequest对象之中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息。
13、过滤器
a、Servlet过滤器本身并不请求和响应对象,它只提供过滤作用。
b、Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容。
c、在Servlet被调用之后检查Response对象,修改Response Header和Response内容,Servlet过滤器负责过滤的web组件可以是Servlet、jsp和HTML。
14、JSP里面的java程序片段可以操作数据库,重新定向网页,实现建立动态网页需要的功能。所以程序操作都在服务器端执行,网络上传输给客户端的仅仅是得到的结果,这样大大降低了对客户端浏览器的要求,即使客户浏览器不支持java,也可以访问JSP页面。
15、下面的包在JSP页面中是不需要导入的,服务器会帮助我们自动导入
java,lang.*
java.servlet.*
java.servlet.jsp.*
java.servlet.http.*
16、使用request来完成向导式页面开发和使用session来完成向导式的页面开发。
说明:使用request和session都可以来完成向导式的页面开发,但是过多的session会占用服务器端的内存,session会一直存在于服务器之中。在实际的开发中,应该使用request和hidden来完成这种向导式的页面开发。
17、javaBean在page范围内
用户每次请求访问jsp页面的时候,都会创建一个JavaBean对象。JavaBean对象的有效范围是用户请求访问的当前jsp页面。JavaBean对象在以下的两种情况下都会结束生命周期。
用户请求访问的当前jsp页面通过标记将请求转发到另外一个页面。
用户请求访问的当前jsp页面执行完毕并向客户端返回响应。
18、Javabean在request范围内
用户每次请求访问jsp页面的时候,都会创建新的Javabean对象。Javabean的有效范围为:
客户请求访问的当前jsp页面
和当前的jsp网页共享同一个用户请求的页面
有<% include>指令以及标记包含的其他jsp页面
当所有共享同一个用户请求的jsp页面执行完毕并向客户端发回响应时,Javabean对象会结束生命周期
19、javabean在session范围内
javabean对象作为属性保存在httpSession对象中,属性名为javabean的id,属性值为Javabean对象。除了可以通过Javabean的id直接引用Javabean对象以外,也可以通过HttpSession.getAttribute()方法来获取javabean对象。
20、javabean在application范围内
javabean对象被创建之后,它存在于整个web应用的生命周期内,web应用中的所有jsp文件都能共享一个javabean对象。