目录
Servlet
1.概述
Servlet即server+applet,指运行在服务器端的小程序,是sun公司提供的一门用于开发动态web资源的技术,通常我们也把实现了servlet接口的java程序也称为Servlet;
2.如何写一个简单的Servlet
有以下几步:
1.创建JavaEE/Jakarta EE项目 ;
2.定义一个类,实现Servlet接口;
3.实现接口中的抽象方法;
4.配置Servlet;
在web.xml中配置
<!--配置Servlet-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.example.demo.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
代码如下:
package com.example.demo;
import jakarta.servlet.*;
import java.io.IOException;
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//提供服务的方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<!--配置Servlet-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.example.demo.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
cookie
1.概述
Cookie 是一种由服务器发送到用户浏览器并保存在本地的小段数据,每次浏览器发送请求到服务器时,都会将这些 Cookie 数据发送回服务器。这样,服务器就可以通过 Cookie 来识别用户,跟踪用户的会话状态,或者存储一些用户的偏好设置。
在 Web 开发中,Cookie 通常用于实现用户登录状态的保持,购物车功能的实现,或者用于记录用户的访问习惯等。
2.使用cookie
以下是cookie中常用属性:
Name:这个是cookie的名字
Value:这个是cooke的值
Path:这个定义了Web站点上可以访问该Cookie的目录
Expires:这个值表示cookie的过期时间,也就是有效值,cookie在这个值之前都有效。
Size:这个表示cookie的大小
下面是一个Java Servlet示例:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
public class CookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html");
// 获取PrintWriter对象,用于向客户端输出内容
PrintWriter out = response.getWriter();
// 设置Cookie
Cookie cookie = new Cookie("username", "John Doe");
// 设置Cookie的过期时间
cookie.setMaxAge(60 * 60 * 24 * 365); // 一年
// 将Cookie添加到响应中
response.addCookie(cookie);
out.println("<html>");
out.println("<head>");
out.println("<title>Cookie Example</title>");
out.println("</head>");
out.println("<body>");
// 获取Cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("username")) {
out.println("<p>Welcome back, " + c.getValue() + "!</p>");
}
}
} else {
out.println("<p>No cookies found.</p>");
}
out.println("</body>");
out.println("</html>");
}
}
session
1.概述
Session(会话)在Web开发中,指的是用户与网站之间的一系列交互过程。在服务器端,Session通常用于存储与特定用户相关的数据,这些数据在用户的多个请求之间保持有效,直到会话结束(如用户关闭浏览器窗口、超时等)。通过Session,服务器能够识别用户并在多个请求之间维护用户的状态。
在Java Web开发中,Session通常是通过HttpSession接口来实现的,该接口是Java Servlet API的一部分。HttpSession对象允许开发者存储和检索与用户会话相关的属性。
2.示例
下面是一个简单的代码示例,演示如何在Servlet中使用Session来存储和获取用户数据:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
public class SessionExampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html");
// 获取PrintWriter对象,用于向客户端输出内容
PrintWriter out = response.getWriter();
// 获取HttpSession对象
HttpSession session = request.getSession();
// 检查session中是否已经有属性"username"
if (session.getAttribute("username") == null) {
// 如果没有,则设置一个属性值
session.setAttribute("username", "John Doe");
out.println("<p>Welcome, you are a new user. Your username is set to John Doe.</p>");
} else {
// 如果已经有,则获取并显示该属性值
String username = (String) session.getAttribute("username");
out.println("<p>Welcome back, " + username + "!</p>");
}
// 设置session的超时时间(以秒为单位),例如设置为30分钟
session.setMaxInactiveInterval(30 * 60);
// 其他处理...
out.close();
}
}
Session的管理和持久化通常由Tomcat自动处理,我们通常不需要关心Session在服务器上的具体存储方式。
HTTP报文
1.概述
HTTP报文是超文本传输协议(HTTP)在客户端和服务器之间传输数据时所使用的格式。HTTP报文主要由请求报文和响应报文两部分组成,它们各自包含了一些固定的字段和可选的字段,用于描述请求或响应的详细信息。
请求报文通常包含请求行、请求头部和请求体(可选)三个部分。请求行包括请求方法(如GET、POST)、请求资源的URL和HTTP协议版本。请求头部包含了关于请求的各种元数据,如User-Agent(用户代理)、Accept-Language(接受的语言)等。请求体则是请求中实际要发送的数据,通常用于POST请求。
响应报文则包含状态行、响应头部和响应体三个部分。状态行包括HTTP协议版本、状态码和状态消息,用于描述请求的处理结果。响应头部与请求头部类似,也包含了一些元数据。响应体则是服务器返回给客户端的实际数据。
2.演示
在Java中,我们可以使用Java的网络API(如java.net.HttpURLConnection
或java.net.http.HttpClient
)来发送HTTP请求并接收响应,从而处理HTTP报文。下面是一个使用HttpURLConnection
发送GET请求的简单示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpExample {
public static void main(String[] args) {
try {
// 创建URL对象
URL url = new URL("http://example.com");
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET"); // 设置请求方法为GET
// 获取响应码
int responseCode = connection.getResponseCode();
System.out.println("Response Code : " + responseCode);
// 如果响应码为200,表示请求成功
if (responseCode == 200) {
// 获取响应体内容
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 输出响应内容
System.out.println(response.toString());
} else {
System.out.println("GET request not worked");
}
// 关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Tomcat
Tomcat是Apache软件基金会(Apache Software Foundation)下的一个核心项目,也是一款非常流行的开源Servlet容器和Web服务器。它实现了Java Servlet规范和JavaServer Pages (JSP) 规范,可以运行Servlet和JSP Web应用。Tomcat以其易用性、稳定性和强大的性能,成为了众多Web开发者和企业的首选Web服务器。
MVC模式与JarMVC
1.MVC
MVC,全称Model-View-Controller,是一种广泛使用的软件设计模式,尤其在Web应用开发和桌面应用开发中。MVC的核心思想是将应用程序的业务逻辑、用户界面和数据模型进行分离,从而实现代码的可重用性、灵活性和可维护性。
在MVC模式中:
Model(模型)代表数据和业务逻辑,它负责处理应用程序的数据部分,包括数据的存储、检索以及业务规则的实现。
View(视图)则负责呈现用户界面,它展示了模型中的数据,并将用户的输入传递给控制器。
Controller(控制器)是模型和视图之间的协调者,它接收用户的输入,调用相应的模型来处理这些输入,并更新视图以反映这些变化。
MVC模式通过明确划分应用程序的不同职责,使得代码结构更加清晰,提高了开发效率。同时,由于各个部分之间的独立性,MVC模式也使得应用程序更加易于维护和扩展。因此,MVC模式在软件开发领域得到了广泛应用,是构建高质量应用程序的重要工具之一。
2.Jar
1.概述
JAR,全称Java Archive,是一种用于聚合Java类文件、相关元数据和资源(如文本、图片等)的软件包文件格式。它以ZIP格式构建,并以“.jar”作为文件扩展名。JAR文件在Java平台应用软件或库的开发中扮演着重要角色,它可以将大量的Java类和相关资源整合到一个单独的文件中,从而简化了代码的传输、分发和部署过程。
JAR文件不仅可以用来管理和分发Java库文件,还可以将一组相关的Java类打包成一个模块,方便代码的管理和维护。此外,JAR包还可以用来管理和分发不同版本的软件,以及防止类文件冲突,提高软件的安全性和可靠性。
在Java开发中,JAR文件的使用非常广泛。开发者可以将常用的库文件打包成JAR包,并在其他项目中使用。同时,通过JAR包,开发者可以更容易地管理代码版本,确保项目中所使用的库文件版本一致,减少因版本不一致而引发的问题。
2.使用
生成jar文件方法 (在命令行中使用):使用 jar 命令创建:
jar cf test.jar test
不显示压缩过程将当前路径下的test路径下的全部内容生成一个test.jar文件,如果已经存在则被覆盖。jar cvf test.jar test
显示压缩过程;jar cvfM test.jar test
不生成清单文件;jar cvfm test.jar manifest.mf test
自定义清单文件信息,m指定读取用户清单信息。清单文件是普通文本文件。jar cvfm test.jar a.txt test
将清单文件中的key-value对提取到META-INF/MANIFEST.MF文件中。jar tf test.jar
查看jar包内容;jar tf test.jar > a.txt
如果jar包中的文件路径和文件非常多,用上一个命令就无法查看所有,所以用重定向将显示结果保存到文件中。jar tvf test.jar
查看详细内容;jar xf test.jar
解压,将jar文件解压到当前目录下;jar xvf test.jar
解压,显示解压过程的信息;jar uf test.jar Hello.class
更新test.jar中的Hello.jar文件,如果存在则覆盖,否则添加;jar uvf test.jar Hello.class
更新时显示详细信息;