📅  最后修改于: 2023-12-03 14:47:25.120000             🧑  作者: Mango
Servlet是Java编写的Web应用程序的基本构建块。Servlet可以接收来自Web浏览器或其他HTTP客户端的请求,并以动态方式生成Web页面或其他响应。Servlet通常用作服务器端组件,但它们也可以在Web浏览器中执行。
Servlet与HTTP请求一起工作。当一个客户端浏览器或其他HTTP客户端向服务器发送请求时,Servlet容器截获请求,并将请求发送给特定的Servlet处理。Servlet处理请求并生成HTTP响应,该响应由Servlet容器发送回客户端。
JSP(Java Server Pages)是Servlet的高级版本,可以使用HTML标记编写Java代码。Servlet只是用Java编写的小型Web应用程序。JSP通过插入Java代码在动态创建的HTML页面中提供了更多的灵活性。
当容器接收到请求时,它将为该请求创建一个新线程。该线程调用Servlet的service()方法,并产生响应。当响应提交给客户端时,线程终止。
Servlet可以抛出异常,但必须提供显式异常处理程序。通常,在Servlet中的异常会导致HTTP错误响应。通过在Web.xml文件中设置错误页面,可以定义自定义错误消息。
可以使用以下方法来获取Servlet请求中的参数:
示例代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String[] interests = request.getParameterValues("interests");
Map<String, String[]> paramMap = request.getParameterMap();
}
可以使用以下代码重定向:
response.sendRedirect("http://www.example.com");
该代码将请求重定向到完全不同的URL。也可以使用相对URL:
response.sendRedirect("index.html");
这将请求重定向到相对于当前URL的index.html。
会话可用于存储和共享用户数据。可以使用以下代码在Servlet中创建和使用会话:
HttpSession session = request.getSession();
session.setAttribute("username", "John Doe");
此代码将在会话中存储用户名。可以在随后的请求中检索该值:
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
如果需要,在Servlet中可以使用以下代码使会话无效:
HttpSession session = request.getSession();
session.invalidate();
会话还可以设置为具有过期时间:
HttpSession session = request.getSession();
session.setMaxInactiveInterval(300); // session expires in 5 minutes
此代码将使会话在用户闲置5分钟后过期。您可以通过将0传递给setMaxInactiveInterval()方法来立即使会话过期。
可以使用以下方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// handle GET request here
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// handle POST request here
}
doGet()方法用于处理HTTP GET请求,而doPost()方法用于处理HTTP POST请求。
可以使用以下代码在Servlet中设置Cookie:
Cookie cookie = new Cookie("username", "John Doe");
response.addCookie(cookie);
此代码将设置名称为“username”的Cookie,其值为“John Doe”。要在客户端中检索Cookie,请使用以下代码:
Cookie[] cookies = request.getCookies();
for(int i = 0; i < cookies.length; i++) {
if(cookies[i].getName().equals("username")) {
String username = cookies[i].getValue();
}
}
此代码将检索名为“username”的Cookie的值。