JavaWeb面试题

1、什么是Servlet?

服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。

 

2、Servlet的生命周期?

 

JavaWeb面试题_第1张图片

 

3、Servlet API中forware()和redirect()的区别?

     重定向会改变URL地址,请求转发不会改变URL地址。

    重定向相当于再一次请求;请求转发仅发生在服务器端。

4、request.getParameter()和request.getAttribute()的区别?

a、request.getParameter()获取的类型是String;

    request.getAttribute()获取的类型是Object

b、request.getPrameter()获取的是POST/GET传递的参数值;

     request.getAttribute()获取的是传递的对象

c、request.setAttribute()和request.getAttribute()可以发送、接收对象;

    request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)

 

5、JSP有哪些内置对象?作用分别是什么?

答:JSP一共有9个内置对象:

request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest

response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse

session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession

out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter

application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext

config:表示ServletConfig,对应类型:javax.servlet.servletconfig

exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception

pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext

page:表示当前JSP页面本身。

 

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

答:JSP是Servlet的扩展,JSP编译后就是Servlet。Servlet和JSP最主要的不同点在于,JSP偏重于视图,Servlet偏重于业务逻辑。

 

7、 详细描述MVC。

      Model:负责数据传递,一般和数据库,form表单对应。

      View:负责页面显示。

      Controller:负责每个请求的分发,可以处理请求并负责业务逻辑。

Model通过JavaBean实现,View是JSP,Controller是一般是一个Servelt。

 

8、get和post的区别?

a、get是用来从服务器上获取数据,而post是用来向服务器传递数据;

b、get将表单中数据按照variable=value的形式,添加到URL后面,并且两者用"?"连接,变量之间用"&"连接;

而post是数据放在请求体,按照变量与值对应的方式,传递到对应的URL。

c、get是不安全的,因为在传输过程中,数据是被放在地址栏中;而post的所有操作对用户来说都是不可见的。

d、get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交。

e、get限制form表单的数据集必须为ASCII字符;而post支持整个IS0字符集。

 

9、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso-8859-1等,如何输出一个某种编码的字符串?

s=new String(str.getBytes("iso-8859-1"),"UTF-8");

 

 

10、说说自动登录功能的编码实现?

答:a、登录功能是用session实现的,就是向session对象中保存当前用户的对象。

      b、自动功能是用cookie实现的,就是登录时将用户的信息保存为持久cookie。

      c、下次访问时,读取请求中如果有用户信息的cookie就可以自动登录。

 

 

11、Request对象的主要方法有哪些?

答:

setAttribute(String name,Object):设置名字为name的request的参数值

getAttribute(String name):返回由name指定的属性值

getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body的长度

getHeader(String name):获得HTTP协议定义的文件头信息

getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例

getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端传送给服务器端的有name指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例

getParametervalues(String name):获得有name指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

 

12、JSP乱码如何解决?

答:a、JSP页面乱码

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

     b、表单提交时出现乱码

     request.setCharacterEncoding("utf-8");

     c、数据库出现乱码

     jdbc:mysql://localhost:3306:/user?useSSL=false&useUnicode=true&characterEncoding=utf-8;

     其实我一般的处理的方法就是配置一个过滤器对每个JSP页面进行字符集处理。

你可能感兴趣的:(笔试)