java面试题网

普通会员

257

帖子

9

回复

129

积分

楼主
发表于 2018-03-23 16:51:51 | 查看: 206| 回复: 0

1:什么是B/SC/S

 Browser/Server浏览器/服务器(瘦客户端)     

 Custom/Server 客户端/服务器(胖客户端)

2:描述war包、jar包、ear包的结构

war-

--myweb

---WEB-INF

----web.xml

----lib

----classes

jar-

--myjar

---META-INF

----.MF

ear-

--META-INF

---Application.xml

--.war

     --.jar

3:什么是servletservlet主要做什么?

网络服务的请求和响应方式

通过WEB浏览器调用servlet的方法,主要是在服务端写动态代码与服务器端交流;

4servlet cgi相比的优点?servlet的缺点

优点:

 性能(线程比进程更快)

 可伸缩

 Java强健且面向对象

 Java平台独立

缺点:

   处理代码(业务逻辑)与HTML(表现逻辑)混合在一起

5:常用的servlet包的名称是?

javax.servlet

javax.servlet.http

6:描述servlet接口的层次结构?

Servlet

--genericServlet

--HttpServlet

--自己的servlet

ServletRequest

ServletResponse

7:对比get方法和post方法?

get方法: 请求对服务器没有负面影响,Form数据量小,数据的内部应在url中可见;

              明文传输,安全度低

post方法:请求的数据过程改变服务器的状态,Form数据量大,数据的内部应在url

中不可见,安全度高;

8:归类描述HttpServletRequest接口都完成那些功能

1.读取和写入HTTP头标 

2.取得和设置cookies

3.取得路径信息 

4.标识HTTP会话。

9:归类描述HttpServletResponse接口都完成那些功能

HttpServletResponse加入表示状态码、状态信息和响应头标的方法,它还负责对URL中写入一Web页面的HTTP会话ID进行解码。

10:描述Service方法所完成的基本功能?默认是在那里实现的?

service方法是在servlet生命周期中的服务期,根据HTTP请求方法(GETPOST等),将请求分发到doGetdoPost等方法

HttpServlet类实现

11:如何开发自己的Servlet?描述应该做的步骤和每步需要完成的工作

1.jar

  1)构建开发环境 common-->lib-->servlet--->api.jar

  2.开发servlet

      1)首先继承HttpServlet

      2)实现 doGet() doPost()

  3)定义 doGet() doPost()

  3.建个web应用

  4.部署

安装web容器,例如Tomcat

Tomcatwebapps目录下新建一个文件夹作为web程序的根

在根下新建一个名为WEB-INF的文件夹,里面建立一个web.xml的文件、一个classes的文件夹、一个lib文件夹

按照servletDTD配置web.xml文件

把编译好的servletclass文件复制到classes目录下

lib文件存放程序所需要的jar

12:为何servlet需要部署描述?

 servlet需要配置web.xml文件来使容器认识servlet程序

13Servlet基本的描述应该是?请写出来

<servlet>

<servlet-name>Hello</servlet-name>

<servlet-class>sl314.web.FormBasedHello</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Hello</servlet-name>

<url-pattern>/greeting</url-pattern>

</servlet-mapping>

14:如何在html中使用servlet

FORM标记

ACTION– 指定form信息的目的地(相关的URL

METHOD – 指定HTTP方法(GETPOST

语法:

<FORM ACTION=’servlet-URL’ METHOD=’{GET|POST}’>

{HTML form tags and other HTML content}

</FORM>

15:如何接受request中的参数

String userName = (String)request.getParameter("userName")方法

16:如何接受requestheader的值

request.getHeader(name);

request.getHeaders(names);

17:如何输出html

PrintWriter pw = response.getWriter();

pw.write("<html>");

pw.write("Hello");

pw.write("</html>");

18:如何设置输出的contentType

response.getContentType()

19:描述servlet的生命周期?

生命周期是指servlet实例在web容器中从:首次创建调用init方法开始初始化期,经过service方法运行期,一直到destory方法销毁期 结束

servlet实例的生命周期由web容器来管理

20:描述init,service,destroy方法的功能和特点

init方法:   是在servlet实例创建时调用的方法,用于创建或打开任何与servlet相的

资源和初始化servlet的状态Servlet规范保证调用init方法前不会处理

任何请求

service方法:是servlet真正处理客户端传过来的请求的方法,由web容器调用,

根据HTTP请求方法(GETPOST等),将请求分发到doGetdoPost等方法

destory方法:是在servlet实例被销毁时有web容器调用。Servlet规范确保在

destroy方法调用之前所有请求的处理均完成需要覆盖destroy方法的情况:释放任何在init方法中打开的与servlet相关的资源存储servlet的状态

21:什么是回调方法?有什么特点?

由容器来调用程序的方法

由容器来决定什么时候来调

22:如何设置初始化servlet的参数?

<init-param>

       <param-name>greetingText</param-name>

       <param-value>Hello</param-value>

  </init-param>

23:如何获取servlet初始化的参数

public void init() {

     greetingText = getInitParameter("greetingText");

     System.out.println(">> greetingText = '" + greetingText + "'");

}

24ServletConfig接口默认在那里实现的

GenericServlet类实现ServletConfig接口

25:什么是ServletContext?有什么作用?

Servlet上下文 

ServletContext对象是Web应用的运行时表示,可通过其实现Web应用中的资源共享

26:如何访问ServletContext接口?是在那里实现的?

Servlet通过getServletContext()方法访问

GenericServlet类实现

27ServletContext接口的功能包括?分别用代码示例

只读初始化参数: getInitParameter(name:String) : String

getInitParameterNames() : Enumeration

读写访问应用级属性:getAttribute(name:String) : Object

setAttribute(name:String, value:Object)

getAttributeNames() : Enumeration

只读访问文件资源: getResource(path) : URL

getResourceAsStream(path) : InputStream

web应用日志文件:log(message:String)

log(message:String, Throwable:excp)

28:如何设置Context的参数?

<context-param>

<param-name>catalogFileName</param-name>

<param-value>/WEB-INF/catalog.txt</param-value>

</context-param>

29:如何获取Context设置的参数值?

ServletContext context = sce.getServletContext();

    String catalogFileName = context.getInitParameter(“catalogFileName”);

30:描述Web应用的生命周期?

Web容器启动时,初始化每个Web应用

可以创建"监听器"对象触发这些事件;

Web容器关闭时,销毁每个Web应用

31:如何用代码实现监控Web应用的生命周期?

public class Test implements ServletContextListener{

public void contextInitialized(ServletContextEvent sce) {

//

}

}

<listener>

<listener-class>

    com.csy.Test

</listener-class>

</listener>

32web应用中如下错误码示什么意思:400401404500

400    Bad Request

401    Unauthorized

404    Not Found

500    Internal Server Error

33:描述Web应用中用声明方式来进行错误处理的两种方法

使用error-page元素声明一个给定HTTP状态码的处理器

<error-page>

 <error-code>404</error-code>

 <location>/error/404.html</location>

</error-page>

可以声明任意数量的错误页面,但一个给定的状态码只能对应一个页面

使用exception-type元素声明给定Java异常的处理器

<error-page>

 <exception-type>

        java.lang.ArithmeticException

 </exception-type>

<location>/error/ExceptionPage</location>

</error-page>

可以声明任意数量的错误页面,但一个给定的异常类型只对应一个页面

不能使用父类捕获多种异常

34:描述记录异常日志的方法,都位于那些接口?

GenericServlet

log(message:String)

log(message:String, Throwable:excp)

ServletContext

log(message:String)

log(message:String, excp:Throwable)

35:什么是会话?

Web容器可为每个用户保存一个"会话对象",用来存储特定用户的会话信息

36:如何获得会话?

HttpSession session = request.getSesseion();

37:会话Api的基本功能?

getID() :String

isNew() :boolean

getAttribute(name):Object

setAttribute(name,value)

removeAttribute(name)

38:如何销毁会话?

1、可使用部署描述符控制所有会话的生命周期

<session-config>

    <session-timeout>10</session-timeout>

    </session-config>

2、可使用控制特定会话对象的生命周期HttpSession接口

invalidate()

    getCreationTime() :long

getLastAccessedTime() :long

getMaxInactiveInterval() :int

    setMaxInactiveInterval(int)

39:描述会话保持状态的基本原理

当客户端第一次请求时,服务器创建一个sessionrequest绑定,用响应对象response来返回sessionid 放到客户端的cookies中存储下来,下次在发送请求时,直接根据sessionid来检索服务器的会话(每次请求都会将所有的cookies带到服务器端)

 

40:如何读写cookie,代码示例

写:String name = request.getParameter("firstName");

Cookie c = new Cookie("yourname", name);

response.addCookie(c);

读:Cookie[] allCookies = request.getCookies();

for ( int i=0; i < allCookies.length; i++ ) {

          if ( allCookies[i].getName().equals(“yourname”) ) {

            name = allCookies[i].getValue();  

          }

    }

41:什么是URL重写,如何实现,代码示例

Cookie不能使用时,可使用URL重写 request.encodeURL();

客户在每个URL的后面追加额外的数据

服务器将此标识符与其存储的有关会话数据相关联

http://host/path/file;jsessionid=123

41:描述web应用的4种认证技术

BASIC – Web浏览器接收用户名和口令,将其以明码方式发送给Web服务器

DIGEST – Web浏览器接收用户名和口令,使用加密算法将此数据发送给Web服务器

FORM – Web应用提供发送给Web浏览器的HTML form

CLIENT-CERT – Web容器使用SSL验证用户,服务端和客户端的链路保护

42:什么是授权,什么是验证?

授权是分局用户角色划分web资源的过程,其标识web应用中的安全域   分配权限

web容器使用厂商指定的机制验证用户的角色   匹配权限

43:什么是HTTPS

HTTPS (Secure Hypertext Transfer Protocol) 是使用SSL协议的HTTP

44:什么是审计?

也就是访问跟踪,是为web应用的每次访问保留记录的过程

45:如何实现声明性授权

1、标识web资源集

2、标识角色

3、将web资源集影射到角色

4、标识每个角色中的用户

在 web.xml里配

46:描述servlet并发问题?

多个同类线程运行,可以共享同一个Servlet实例,共享的数据和资源未合理同步,可能会引起数据的冲突

47:描述Web应用中的六种属性范围

局部变量(页面范围)

实例变量

类变量

请求属性(请求范围)

会话属性(会话范围)

上下文属性(应用范围)

48:支出上述六种那些是线程安全的

局部变量和请求属性

49:什么是STM?如何实现?

SingleThreadModel接口

可以实现SingleThreadModel接口保证某一时刻只有一个请求执行service方法

50:如何实现并发管理?

尽可能使用局部和请求属性

使用synchronized语法控制并发

尽可能减少同步块和同步方法的使用

使用正确设置了线程安全的资源类



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018