说出Servlet的生命周期,并说出Servlet和GCI的区别。

  Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init方法进行Servlet的初始化,请求到达时运行其Service方法,Servive方法自动派遣运行与请求对应的doXXX方法(doGet、doPost)等;当服务器决定将实例销毁的时候调用其destroy方法。与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其Service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。

forward和redirect的区别。

  forwrad是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪里来的,所以它的地址栏还是原来的地址。

  redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以Session、Request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forwrad()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

JSP中动态INCLUDE与静态INCLUDE的区别。

  动态INCLUDE用jsp:include动作实现<jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE用include伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.html" %>

说出数据连接池的工作机制是什么。

  J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要建立时,池驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当时用的池连接调用完成后,池驱动程序将此连接标记为空闲,其他调用就可以使用这个连接。

JSP的内置对象及方法。

  request 表示 HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie、header、session数据的有用的方法;

  response 表示 HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies、头信息等);

  out 对象是 javax、jsp、JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果;

  pageContext 表示一个 javax、servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法;

  session 表示一个请求的 javax、servlet.http.HttpSession 对象。Session可以存贮用户的状态信息;

  application 表示一个 javax、servlet.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息;

  config 表示一个 javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数;

  page 表示从该页面产生的一个servlet 实例。

JSP的常用指令。

  <%@page language="java"  contenType="text/html;charset=gb2312"  session="true"  buffer="64kb"  autoFlush="true"  isThreadSafe="true"  info="text"  errorPage="error.jsp"  isErrorPage="true"  isELIgnored="true"  pageEncoding="gb2312"  import="java.sql.*" %>

  isErrorPage:是否能使用Exception对象;

  isELIgnored:是否忽略EL表达式;

  <%@include file="filename" %>

  <%@taglib prefix="c"  uri="http://........core" %>

jsp有哪些动作?作用分别是什么?

  JSP共有以下六种基本动作:

  jsp:include  在页面被请求的时候引入一个文件;

  jsp:useBean  寻找或者实例化一个JavaBean;

  jsp:setProperty  设置JavaBean的属性;

  jsp:getProperty  输出某个JavaBean的属性;

  jsp:forwrad  把请求转到一个新的页面;

  jsp:plugin  根据浏览器类型为Java插件生成Object或Embed标记。

jsp有哪些内置对象?作用分别是什么?

  JSP共有以下九种基本内置组件(可与ASP的六种内部组件相对应):

  request:  用户端请求,此请求会包含来自GET/POST请求的参数;

  response:  网页传回用户端的回应;

  pageContext:  网页的属性是在这里管理;

  session:  与请求有关的会话期;

  application:  servlet正在执行的内容;

  out:  用来传送回应的输出;

  config:  servlet的构造部件;

  page:  JSP网页本身;

  exception:  针对错误网页,未捕捉的例外。

GET和POST的区别?

  form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:

  1)GET是用来从服务器获取数据,而POST是用来向上传递数据;

  2)GET将表单中数据按照vaeiable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;POST是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL;

  3)GET是不安全的,因为在传输过程,数据被放在请求的URL中;POST的所有操作对用户来说都是不可见的;

  4)GET传输的数据小,这主要是因为受URL长度限制;而POST可以传输大量的数据,所以在上传文件只能使用POST;

  5)GET限制form表单的数据集必须为ASCLL字符,而POST支持整个ISO10646字符集;

  6)GET是form的默认方法。

什么情况下调用doGet()和doPost()?

  Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。

如何从form表单中得取checkbox的值?

  可在页面把checkbox的name属性取同一个,value属性取每个条目的id,后台用getParamter("name")能取到checkbox的一组值。

页面中有一个命名为bank的下拉列表,写脚本获取当前选项的索引值。

  用 java或 javaScript的处理方式分别如下:

  Java:  request.getParameter("bank");

  javaScript:  var selectItems = document.getElementsByName("bank");

           selectItems[0].value;

javaScript 常用的方面

  常用于数据输入效验和页面特殊效果等;

常用的web容器和开发工具

  最常用的容器包括:tomcat、weblogic;

  开发工具:eclipse、jbuilder;

JSP和Servlet有哪些相同点和不同点,它们之间的联系是什么?

  JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

jsp的四种范围

  page是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括servlet又包括被编译成 servlet 的 JSP 页面;

  request是代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件(由于 forwrad 指令和 include 动作的关系);

  session 是代表与用于某个Web客户机的一个用户体验相关的对象和属性。一个Web会话可以也经常会跨越多个客户机请求;

  application 是代表与整个Web应用程序相关的对象和属性。这实质上是跨越整个Web应用程序,包括多个页面,请求和会话的一个全局作用域。

Request对象的主要方法?

 request.setAttribute(name, Object);//设置名字为name的属性值;
request.getAttribute(name);//返回由name指定的属性值;
request.getAttributeNames();//返回request对象所有属性的名字集合(枚举);
request.getCookies();//返回客户端的所有Cookie对象,结果是一个Cookie数组;
request.getCharacterEncoding();//返回请求中的字符编码方式;
request.getContentLength();//返回请求的Body的长度;
request.getHeader(name);//获得HTTP协议定义的文件头信息;
request.getHeaders(name);//返回指定名的request Header的所有值(枚举);
request.getHeaderNames();//返回所有 request Header的名字(枚举);
request.getInputStream();//返回请求的输入流,用于获得请求中的数据;
request.getMethod();//获得客户端向服务器端传送数据的方法;
request.getParameter(name);//获得客户端请求中传送的name指定的参数值;
request.getParameterNames();//获得客户端传送给服务端的所有参数的名字(枚举);
request.getParameterValues(name);//获得有name指定的参数的所有值;
request.getProtocol();//获得客户端向服务端传送数据所依据的协议名称;
request.getQueryString();//获得查询字符串;
request.getRequestURI();//获得发出请求字符串的客户端地址;
request.getRemoteAddr();//获得客户端的IP地址;
request.getRemoteHost();//获取客户端的名字;
request.getSession(create);//返回和请求相关Session;
request.getServerName();//获取服务器的名字;
request.getServletPath();//获取客户端所请求的脚本文件的路径;
request.getServerPort();//获取服务器的端口号;
request.removeAttribute(name);//删除请求中的一个属性;

Web部分的更多相关文章

  1. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. 网页提交中文到WEB容器的经历了些什么过程....

    先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...

  3. 闲来无聊,研究一下Web服务器 的源程序

    web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...

  4. java: web应用中不经意的内存泄露

    前面有一篇讲解如何在spring mvc web应用中一启动就执行某些逻辑,今天无意发现如果使用不当,很容易引起内存泄露,测试代码如下: 1.定义一个类App package com.cnblogs. ...

  5. 对抗密码破解 —— Web 前端慢 Hash

    (更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...

  6. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

  7. 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)

    Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...

  8. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  9. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  10. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

随机推荐

  1. 深度学习之Batch Normalization

    在机器学习领域中,有一个重要的假设:独立同分布假设,也就是假设训练数据和测试数据是满足相同分布的,否则在训练集上学习到的模型在测试集上的表现会比较差.而在深层神经网络的训练中,当中间神经层的前一层参数 ...

  2. 8天入门docker系列 —— 第四天 使用aspnetcore小案例熟悉端口映射和挂载目录

    到目前为止大家应该对镜像和容器有了一个大概认知,而且也用了docker进行了一个简单化的部署,但仔细一看问题还有很多,所以这篇我们继续完善. 一:如何让外网访问到容器内应用 我们知道容器内拥有自己的子 ...

  3. 在ASP.NET Core中给上传图片功能添加水印

    在传统的.NET框架中,我们给图片添加水印有的是通过HttpModules或者是HttpHandler,然后可以通过以下代码添加水印: var image = new WebImage(imageBy ...

  4. 深入学习Redis(2):持久化

    前言 在上一篇文章中,介绍了Redis的内存模型,从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化.复制(及读写分离).哨兵.以及集群. 本文将先说明上述几种技术分别解决了Redis高可 ...

  5. 彻底理解浏览器的缓存机制(http缓存机制)

    一.概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步s ...

  6. SpringBoot之旅第五篇-数据访问

    一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有Mo ...

  7. 【TCP协议】(3)---TCP粘包黏包

    [TCP协议](3)---TCP粘包黏包 有关TCP协议之前写过两篇博客: 1.[TCP协议](1)---TCP协议详解 2.[TCP协议](2)---TCP三次握手和四次挥手 一.TCP粘包.拆包图 ...

  8. ShortcutBadgerDemo【安卓应用角标(badge)实现方案】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 本文主要使用的开源库是 leolin310148/ShortcutBadger,但是在其基础上做了一些修改. 什么是应用角标? 1. ...

  9. uni-app—从安装到卸载

    uni-app实现了一套代码,同时运行到多个平台.支持iOS模拟器.Android模拟器.H5.微信开发者工具.支付宝小程序Studio.百度开发者工具.字节跳动开发者工具 工具安装 开发uni-ap ...

  10. cocos creator主程入门教程(四)—— 网络通信

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑.本系列文章以TypeScript为介绍语言. 前面已经介绍怎样加载资源.管理弹窗.开发一个网络游戏,难免要处理网络通信.有几点问题需要注意: 1.服务 ...