最全一起学Java——Servlet与JSP进阶,dubbo和zookeeper面试

面试资料整理汇总

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题

这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

在这里祝大家能够拿到心仪的offer!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

@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总结
  1. Cookie是浏览器保存在本地的文本内容

  2. Cookie常用于保存登录状态、用户资料等小文本

  3. Cookie具有时效性,默认为浏览器窗口关闭,Cookie内容会伴随请求发送给tomcat

Session用户会话

刚才看了Cookie,我们知道Cookie信息是存储在客户机上的文本信息,虽然是进行了加密,但是因为其存储在本地,相对来说安全性还是不够高。为此Java Web给我们提供了另外一种用户会话方式-session。

Session有如下特点:

  1. 用于保存与浏览器串口对应的数据

  2. 数据存储在Tomcat服务器的内存中,具有时效性(默认为30min)

  3. 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);

}

}

Title

姓名:

地址:

请添加图片描述

  • GET请求编码处理

对于get请求来说,Tomcat8.x以后默认的get字符集就是utf-8,当我们的Tomcat版本是7.x及以下的时候需要这么设置。

解决办法看这里

web.xml常用配置
  • 修改默认首页

index.html

请添加图片描述

  • 通配符映射及初始化参数

pattern

com.example.web1.pattern

pattern

/pattern/*

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂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)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值