最后
总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
域对象是可以像Map一样存取数据的对象。
这些域对象的功能差不多,但是作用范围不同!!!
(request域对象的范围是一次请求及其抓发。)
scope.jsp页面:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
scope.jsp页面
<%
//往四个域中都分别保存了数据
pageContext.setAttribute(“key”, “pageContext”);
request.setAttribute(“key”, “request”);
session.setAttribute(“key”, “session”);
application.setAttribute(“key”, “application”);
%>
pageContext域值是否有值:<%=pageContext.getAttribute(“key”) %>
request域值是否有值:<%=request.getAttribute(“key”) %>
session域值是否有值:<%=session.getAttribute(“key”) %>
application域值是否有值:<%=application.getAttribute(“key”) %>
<%
//下面代码就是一个请求转发的一个过程,以此来测试4个域对象的范围有何不同。
request.getRequestDispatcher(“/scope2.jsp”).forward(request, response);
%>
scope2.jsp页面:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
scope2.jsp页面
pageContext域值是否有值:<%=pageContext.getAttribute(“key”) %>
request域值是否有值:<%=request.getAttribute(“key”) %>
session域值是否有值:<%=session.getAttribute(“key”) %>
application域值是否有值:<%=application.getAttribute(“key”) %>
========================================================================================
out和response输出时,没什么不同,但是有一定的顺序!!
伴随上图,定义out.write(“xxx”)输出数据时,它会先进入out缓冲区,同样response.getWriter().write()写数据时,也是进入response缓冲区。之后,out缓冲区的内容会追加到response缓冲区中,才有了这种顺序。
out.flush()方法执行时,会清空当前缓冲区,如果缓冲区中有数据,则输出缓冲中的数据,直接将现在的out缓冲区内容直接添加到response缓冲区中,因此,调用该方法时,就会注意out输出和response的顺序问题!!
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
测试
<%
out.write(“out输出1
”);
out.flush();//注意flush方法不同!!
out.write(“out输出2
”);
response.getWriter().write(“response输出1
”);
response.getWriter().write(“response输出2
”);
%>
因为,我们底层信息之类的都是用out.write()方法来运行的,因此我们在jsp页面中定义java代码,也用out来进行输出,不然会遇到顺序混乱的问题。
jsp中的out变量中有两个输出方法:
-
out.write()方法:输出字符串没有问题。
-
out.print()方法:输出任意数据都没有问题(都转换成为字符串后调用的write输出)
out.print()方法它是不管接受的参数类型,它的底层都是转为字符串类型,之后调用write()方法。
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%
//传入int类型,write它返回的就是一个acill码对应的字符,因为他的底层原理是一个char[]数组。
out.write(12);
//print没事就是因为,它无论接受什么都先将该类型转为字符串类型,之后在调用write()方法。
out.print(12);
%>
因为可能出现类似上面这种情况的出现,因此我们在jsp页面中,统一使用out.print()方法来输出。
==========================================================================
包含引入功能如下:
静态包含的格式: <%@include file=“要包含的jsp页面的路径” %>
注意这里的" / "斜杆表示也是:http://ip:port/工程路径 映射到代码的web目录。
main.jsp包含引入footer.jsp:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
头部信息
主体内容
<%@include file=“/include/footer.jsp” %>
footer.jsp:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
页脚信息
静态包含的特点:
-
静态包含不会把被包含的jsp页面翻译为java代码。
-
静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出。
动态包含的特点:
-
动态包含会把包含的jsp页面也翻译成为java代码。
-
动态包含底层代码使用如下代码调用被包含的jsp页面输出。
- 动态包含,还可以传递参数。
main.jsp代码如下:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
头部信息
主体内容
<jsp:include page=“/include/footer.jsp”>
<%-- 使用jsp和param这种name,value格式可以向footer.jsp发送数据。 --%>
<jsp:param value=“zhangsan” name=“username”/>
<jsp:param value=“123” name=“password”/>
</jsp:include>
footer.jsp代码如下:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
页脚信息,动态包含
<%-- 使用request.getParameter()可以获取到传过来的参数内容。 --%>
<%=request.getParameter(“username”) %>
<%=request.getParameter(“password”) %>
请求转发两种方式:
-
通过代码方式进行的请求转发。
-
<jsp:forward page=“”></jsp:forward>是请求转发标签,它的功能就是请求转发。
a.jsp代码如下:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%–
<% //请求转发方式一:通过代码方式进行的请求转发如下:
request.getRequestDispatcher(“/include/b.jsp”).forward(request, response);%>
–%>
<%–
请求转发方式二: <jsp:forward page=“”></jsp:forward>是请求转发标签,它的功能就是请求转发。
page 属性设置请求转发的路径
–%>
<jsp:forward page=“/include/b.jsp”></jsp:forward>
b.jsp代码如下:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
我是页面b,请求转发过来的,第二种方式。
=======================================================================================
九九乘法表的案例:
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
九九乘法表居中
<% for(int i=1;i<=9;i++){ %>
<% for(int j=1;j<=i;j++){ %>
<%=i+"x"+j+"="+(i*j)+" " %><%}%>
<% }%>
对于一些常用的情况,都有一定的设计结构步骤:
========================================================================
惊喜
最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)
========================================================================
惊喜
最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)
[外链图片转存中…(img-L4NnqXtU-1714840901304)]
[外链图片转存中…(img-UBahVeAk-1714840901305)]