admin 管理员组

文章数量: 887032


2024年1月5日发(作者:安装sql的实验总结)

JAVA知识SERVLET面试题

Sun(Oracle)公司制定的一种用来扩展Web服务器功能的组件规范。

appName---

-----WEB-INF

--------classes

-----------

--------lib

-----------(可选)

--------

HTTP协议是HyperText Transfer Protocol的简写,它是由w3c(万维网联盟)制定的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式。

请求头中的键值对:

t-Length:105表示请求消息正文的长度为105。

tion:Keep-Alive表示需要持久连接。

:localhost表示请求资源的Internet的主机为localhost,端口为80。

响应头的键值对:

:Apache/

2.0.45表示服务器名字为Apache/2.0.45。

t-Type:text/html表示响应的MIME类型为text/html。

/doc/,st-Modified月16日12点44分13秒,星期一。

404地址错误(拼写不正确,字母大小写错误)。

文件中的不一致。

404工程没有部署。

404Web应用程序部署结构没有遵守Servlet规范。

:MON16Jan201212:44:13表示文档的最后改动时间为2012年1

405service方法名称写错。

405service方法参数类型与标准不一致。

405service方法异常、返回值类型与标准不一致。

500Servlet类没有继承HttpServlet或实现Servlet接口

文件中的写错

500service方法中的代码运行时抛出异常

500错误有可能是文件中配置错误。

404错误工程没有部署。

public void service(HttpServletRequest

request,HttpServletResponse response)

服务器在创建好Servlet对象之后,会调用该方法来处理请求。

PrintWriter out=ter();

获得向浏览器打印的输出流。

n(rs);

向流中输出数据,其实质是,将处理结果存放到response对象上。

GET和POST的区别如下:

1.从提交的数据量上来说,get方式会将请求参数及参数值放在请求资源路径里面,携带的数据大小有限制,不适合提交大量的数据;post方式会将请求参数及参数值放在实体内容里面,理论上没有限制,适合大量数据的提交。

2.从安全上来讲,post方式相对安全(因为请求参数及值存放在实体内容里面,而get方式会将请求参数及值显示在浏览器地址栏)。但是要注意,post方式并没有将数据加密。

处理表单提交的中文,分为两种情况,一是post方式提交表单、一是get方式提交表单。

1.处理post方式提交表单时的中文,步骤如下:

step1:确保表单所在的页面按照指定的字符集打开,在HTML中设置如下:

另外,在HTML中,将表单form的提交方式设置为post。

step2:在服务器端按照上述设置的编码格式进行解码,代码如下:

racterEncoding(“utf-8”);

该行代码要在第一次使用request的时候进行设置。

2.处理get方式提交表单时的中文,步骤如下:

step1:使用meta确保表单所在页面按指定字符集打开,在HTML中设置如下:

另外,在HTML中,将表单form的提交方式设置为get。

step2:将从表单中获取的信息使用上述设置的字符集utf-8进行重新编码。例如:将从表单获取的username进行重新编码,代码如下:

String username=ameter(“username”);

username=new

1”),“utf-8”);

String name=ameter("name");

获取请求参数name的值。

tentType("text/html;charset=utf-8");

保证servlet输出中文无乱码。

页面中可以包含Java代码,包含以下三种形式:

JSP表达式

JSP小脚本

JSP声明

其作用为控制页面中可变内容的产生。

页面中可以包含指令,语法规则为“<%@指令名属性=值%>”。常用指令如下:

page指令

include指令

taglib指令

其作用为控制JSP在转译成Servlet类时生成的内容。

页面中包含隐含对象,所有隐含对象由容器自动创建,在JSP文件中可以直接使用。隐含对象

--输入输出对象request respnose out

String(es(“iso-8859-

--作用域通信对象session application pageContext

--Servlet对象page config

--异常对象exception

其作用为JSP预先创建的这些对象可以简化对HTTP请求、响应信息的访问

1.<%@page pageEncoding="utf-8"contentType="text/html;charset=utf-8"%>

通过page指令设置了容器读取该文件时,按UTF-8进行解码;设置tentType 方法的参数值为"text/html;charset=utf-8"。

2.<%%>JSP小脚本,能够写在方法里的Java代码片段都可以作为小脚本。

3.<%=()%>输出“()”的值到浏览器。

转发是一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续完成。

1.绑定数据到request对象

ribute(String name,Object obj);

2.获得转发器

RequestDispatcher rd=uestDispatcher(String

uri);

3.转发

d(request,response);

转发和重定向的区别有以下几点:

1.重定向是浏览器发送请求并收到响应以后再次向一个新地址发请求,转发是服务器收到请求后为了完成响应转到一个新的地址。

2.重定向中有两次请求,不共享数据,转发只产生一次请求,且在组件间共享数据。

3.重定向后地址栏地址改变,而转发则不会。

4.重定向的新地址可以是任意地址,转发到的新地址必须是同一个应用内的某地址。

将客户端(浏览器)与服务器之间多次交互当整体来看待,并且将多次交互所涉及的数据即状态保存。

浏览器向web服务器发送请求时,服务器会将少量的数据以set-Cookie消息头的方式发送给浏览器,浏览器将这些数据保存下来;当浏览器再次访问服务器时,会将这些数据以Cookie 消息头的方式发送给服务器。

Cookie[]cookies=kies();

获取请求的客户端的所有Cookie对象。

String name=e();

获取一个Cookie对象的名称。

浏览器访问Web服务器时,服务器会为每一个浏览器在服务器端的内存中分配空间,单独创建一个Session对象,该对象有一个Id属性,其值唯一,一般称之为SessionId,并且服务器会将这个SessionId(使用Cookie的方式)发送给浏览器;浏览器再次访问服务器时,会

将SessionId发送给服务器,服务器可以依据SessionId找到对应的Session对象。

Session超时指的是:Web服务器会将空闲时间过长的Session对象删除掉,以节省服务器内存空间资源。web服务器缺省的超时时间限制:一般是30分钟。

过滤器是Servlet2.3规范中定义的一种小型的、可插入的Web组件。用来拦截Servlet容器的请求和响应过程,以便查看、提取客户端和服务器之间正在交换的数据。过滤器通常是封装了一些功能的Web组件,这些功能很重要,但对于处理客户端请求或发送响应来说不是决定性的。典型的应用包括记录请求和响应的数据、管理会话属性等。

过滤器的开发步骤如下;

1.编写一个Java类,实现Filter接口。

2.在doFilter方法中实现拦截处理逻辑。

3.将过滤器添加到Web程序中。

4.把过滤器和Web应用一起打包部署。

Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。

EL表达式是一套简单的计算规则,用于给JS标签属性赋值,也可以直接用来输出。

EL表达式的作用可分为以下三类:

1.访问Bean的属性。

2.输出简单的运算结果。

3.获取请求参数值。

[EL表达式查找对象的范围依次是pageContext、request、session、application。]

[使用EL表达式输出对象的属性值时,如果属性值为空,则输出空白。]

[如果指定了对象的查找范围,那么如果在该范围内没有找到绑定的对象则不会再去其他范围进行查找了。]

[使用EL表达式输出Bean属性时,允许使用下标的形式。${sts[0]}]

[核心标签中if标签有test属性,choose标签和forEach标签没有test属性。]

[核心标签中的choose标签内可以包含when和otherwise子标签。]

[forEach标签的varStatus属性表示指定一个绑定名称,绑定值是一个由容器创建的对象,该对象封装了当前迭代的状态。当绑定名称为index时返回正在被迭代的对象的下标,下标从0开始。]

[自定义标签时可以继承自TagSupport类。]

使用JSTL标签的作用是可以降低代码的工作量,界面更加简洁,便于维护.后台开发人员可以分工合作,从而提高效率

1.开发自定义标签的步骤如下:

1)编写Java类,继承SimpleTagSupport类。

2)在doTag方法中添加处理逻辑。

3)配置标签说明文件。

2.标签的运行原理如下:

容器依据JSP标签的命名空间找到标签的描述文件(.tld文件),然后依据标签名字找到标签类,接下来将该标签类实例化。容器会依据标签的属性给标签实例的属性赋值,然后调用标签实例的doTag方法。


本文标签: 请求 对象 标签 浏览器 数据