1.四大共享范围
application:
全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。
session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。
request:
请求作用域,就是客户端的一次请求。
page:
一个JSP页面。
以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。
2.RequestDispatcher的使用
1)RequestDispatcher对象由Servlet容器创建,用于封装一个由路径所标识的服务器资源。利用RequestDispatcher对象,可以把请求发给其他的Servlet或jsp页面。
2)得到RequestDispatcher对象的三种方法:
一是利用ServletRequest接口中的getRequestDispatcher(String path)方法
另外两种是利用ServletContext接口中的getNamedDispatcher(String name)和getRequestDispatcher(String path)
3)区别
ServletContext.getRequestDispatcher(String path)方法的参数必须以斜杠(/)开始,被解释为相对于当前上下文根(context root)的路径。例如:/myservlet是合法的路径,而../myservlet是不合法的路径。
ServletRequest.getRequestDispatcher(String path)方法的参数不但可以使相对于上下文根的路径,而且可以是相对于当前Servlet的路径。如/myservlet和myservlet都是合法的路径。如果路径以斜杠(/)开始,则被解释为相对于当前上下文根的路径;如果没有以斜杠(/)开始,则被解释为相对于当前Servlet的路径。ServletContext接口中的getNamedDispatcher()方法则是以在部署描述符中给出的Servlet(或jsp)的名字作为参数。例:
WEB-INF目录下有页面:test.jsp
servlet的目录为:/com/LoginServlet
如果使用:
request.getRequestDispatcher("WEB-INF/test.jsp").forward(request, response);
这里使用的相对路径,是以当前类所在目录路径(/com/)为基准路劲,再拼上跳转路径,最终跳转地址为:/com/WEB-INF/test.jsp
该路径下并没有这个文件,会出现404错误。
如果使用:
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);
这里使用的绝对路径,最终跳转地址即为程序中设置的跳转地址:/WEB-INF/test.jsp,跳转正常。
3.Forward和sendRedirect方法的区别
forward()就是转发。sendRedirect就是重定向。两者最大的区别就是一个是:
forward()执行后还是在同一个request范围,
而sendRedirect执行之后就不在同一个request范围里面。
4、请罗列jsp中的脚本、指令及动作?
脚本
<%%> <%=%> <%!%> <%----%>
指令
<%@page contentType=”text/html;charset=utf-8” language=”java” import=””%>
<%@include file=””%>
<%@taglib uri=”” prefix=””%>
动作:
<jsp:useBean class=”” id=”” scope=””> 在scope中如果没有实例化一个对象,如果有直接用以前的。
<jsp:getProperty name=”” property=””> 向一个bean中设置属性值
<jsp:forward > jsp页的转发
<jsp:include page=””> 导入一个jsp页面
5、Servlet中的核心类有那些,各有什么特点?
1) ServletContext:容器,放置全局变量
setAtribute()
getAttribute()
2) ServletConfig:一个servlet的配置
getInitParameter(”名称”)
3) HttpServletRequest:封装的所有的请求
getParameterValue(”名称”)
getParameterValues(”称”)
getSession();
getAttribute(” 名称”);
getRequestDispatch(”a.jsp”).forward(request,response)
4) HttpServletResponse:响应
getOut();
sendRedirect(””)
5) HttpSession:一个用户多个页面共享同一变量
setAttribute(””,””)
参考:
https://blog.csdn.net/shxz130/article/details/39735373
http://blog.51cto.com/dezewuyou/1812707