1、什么是Servlet?
服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。
2、Servlet的生命周期?
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页面进行字符集处理。