面试资料整理汇总
这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。
面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了
在这里祝大家能够拿到心仪的offer!
@WebServlet(name = “Servletlogin”, value = “/Servletlogin”)
public class Servletlogin extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println(“this is index page!”);
}
}
- 重定向
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-05 23:23
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “Servletcheck”, value = “/Servletcheck”)
public class Servletcheck extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“登录成功!”);
// 实现响应重定向
response.sendRedirect(“/web1_war_exploded/Servletlogin”);
}
}
- 请求转发与重定向
请求转发意味着服务器完成跳转,只会产生一次请求。
响应重定向由浏览器跳转,会产生两次请求。
浏览器Cookie
大家打开自己电脑上需要登录的网站,然后登录后关闭浏览器,重新打开后发现我们的登录信息依旧保存在浏览器,这就是通过Cookie实现的。
- 设置Cookie
Cookie cookie = new Cookie(“user”, “kkkkkkk”);
//设置cookie的最长生命,单位为秒
cookie.setMaxAge(60 * 60 * 24 * 7);
response.addCookie(cookie);//生成并添加Cookie信息
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 10:33
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletCookie”, value = “/ServletCookie”)
public class ServletCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“登陆成功!”);
Cookie cookie = new Cookie(“user”, “kkkkkkk”);
//设置cookie的最长生命,单位为秒
cookie.setMaxAge(60 * 60 * 24 * 7);
response.addCookie(cookie);
response.getWriter().print(“
login success
”);}
}
- 读取Cookie
request.getCookies() //用于获取保存的cookie信息,返回的是一个数组
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 10:42
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletgetCookie”, value = “/ServletgetCookie”)
public class ServletgetCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.getCookies()用于获取保存的cookie信息,返回的是一个数组
Cookie[] cookies = request.getCookies();
String user = null;
for(Cookie c : cookies){
System.out.println(c.getName()+ “:” + c.getValue());
if(c.getName().equals(“user”)){
user = c.getValue();
break;
}
}
if(user == null){
response.getWriter().println(“
not login
”);}else{
response.getWriter().println(“user” + user);
}
}
}
- Cookie总结
-
Cookie是浏览器保存在本地的文本内容
-
Cookie常用于保存登录状态、用户资料等小文本
-
Cookie具有时效性,默认为浏览器窗口关闭,Cookie内容会伴随请求发送给tomcat
Session用户会话
刚才看了Cookie,我们知道Cookie信息是存储在客户机上的文本信息,虽然是进行了加密,但是因为其存储在本地,相对来说安全性还是不够高。为此Java Web给我们提供了另外一种用户会话方式-session。
Session有如下特点:
-
用于保存与浏览器串口对应的数据
-
数据存储在Tomcat服务器的内存中,具有时效性(默认为30min)
-
Session通过浏览器Cookie的SessionId提取用户数据
- 设置Session
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 11:06
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletSession”, value = “/ServletSession”)
public class ServletSession extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“登录成功!!”);
// 获取用户对话Session对象
HttpSession session = request.getSession();
// 添加会话信息
session.setAttribute(“name”, “kk”);
request.getRequestDispatcher(“/ServletSessionIndex”).forward(request, response);
}
}
- 获取Session
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 11:07
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletSessionIndex”, value = “/ServletSessionIndex”)
public class ServletSessionIndex extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String name = (String)session.getAttribute(“name”);
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().println(“
这是登陆后的页面,当前用户为”+ name);
}
}
- Session原理
ServletContext对象
ServletContext(Servlet上下文对象),是Web应用全局对象。一个Web应用只会创建一个ServletContext对象,ServletContext随着Web的启动而自动创建。
- 设置ServletContext
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 11:23
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletCon”, value = “/ServletCon”)
public class ServletCon extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = request.getServletContext();
context.setAttribute(“copyright”, “专业bug开发 @2019-2022”);
context.setAttribute(“title”, “专业开发bug20年!”);
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().println(“初始化成功!”);
}
}
- 获取ServletContext
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 11:28
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletgetCon”, value = “/ServletgetCon”)
public class ServletgetCon extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = request.getServletContext();
String copyright = (String)context.getAttribute(“copyright”);
String title = (String)context.getAttribute(“title”);
response.setContentType(“text/html;charset=utf-8”);
response.getWriter().println(“
” + copyright + “
”);response.getWriter().println(“
” + title + “
”);}
}
Web乱码问题解决
通过前面的学习我们发现一个问题,当我们的程序中含有中文的时候会出现乱码问题,这主要是由于Tomcat默认使用的字符集是ISO-8859-1,属于西欧字符集。所以我们解决乱码问题的核心是将ISO-8859-1转换成UTF-8(Servlet的请求响应都需要设置编码格式)。
- POST请求编码处理
package com.example.web1; /**
-
Description:
-
@Author: kk(专业bug开发)
-
DateTime: 2022-01-06 12:57
*/
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = “ServletCharset”, value = “/ServletCharset”)
public class ServletCharset extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置请求体中的字符编码格式
request.setCharacterEncoding(“UTF-8”);
String name = request.getParameter(“name”);
String address = request.getParameter(“address”);
System.out.println(“name:” + name + “address:” + address);
}
}
姓名:
地址:
- GET请求编码处理
对于get请求来说,Tomcat8.x以后默认的get字符集就是utf-8,当我们的Tomcat版本是7.x及以下的时候需要这么设置。
web.xml常用配置
- 修改默认首页
index.html
- 通配符映射及初始化参数
pattern
com.example.web1.pattern
pattern
/pattern/*
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
adow_50,text_Q1NETiBA5LiT5LiaYnVn5byA5Y-R,size_20,color_FFFFFF,t_70,g_se,x_16)
- 通配符映射及初始化参数
pattern
com.example.web1.pattern
pattern
/pattern/*
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
[外链图片转存中…(img-n1A9lW5L-1715591939914)]
[外链图片转存中…(img-2vUSmNMS-1715591939914)]