Apache Tomcat,通常简称为Tomcat,是一个开源的Java Servlet容器,由Apache Software Foundation开发和管理。它实现了Java Servlet和JavaServer Pages (JSP)规范,提供了一个纯Java的HTTP web服务器环境,用于运行Java代码。
Tomcat的主要特点包括:
Servlet容器:Tomcat是一个Servlet容器,它允许你运行Java Servlets和JSPs,这些是Java EE技术的一部分。
轻量级:Tomcat是一个轻量级的Web服务器和Servlet容器,它不像其他企业级的Java EE应用服务器那样提供所有的Java EE规范实现。这使得Tomcat更加适合小型到中型的Web应用程序。
可扩展性:Tomcat设计灵活,可以通过添加额外的组件来扩展其功能,例如,通过添加Apache Camel来集成不同的系统。
跨平台:Tomcat是100%纯Java编写的,因此它可以在任何支持Java虚拟机的操作系统上运行。
社区支持:作为一个开源项目,Tomcat有一个活跃的社区,提供文档、教程、论坛和邮件列表,以帮助开发人员解决问题和分享经验。
持续更新:Apache Software Foundation定期更新Tomcat,修复bug,提升性能,并增加新功能。
Tomcat广泛应用于开发和生产环境中,尤其是在需要轻量级解决方案的情况下。它经常与Spring Boot一起使用,Spring Boot是一个流行的Java框架,它简化了基于Spring的应用程序的配置和部署。Spring Boot内置了对Tomcat的支持,使得创建独立的、生产级别的Web应用程序变得非常简单。
流程如下(如何配置web.xml文件)
web.xml
<servlet>
<servlet-name>RequestAPIServlet</servlet-name>
<servlet-class>com.example.ServletDemo1.RequestAPIServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RequestAPIServlet</servlet-name>
<url-pattern>/RequestAPIServlet</url-pattern>
</servlet-mapping>
在编写servlet程序的时候都会写servlet来继承HTTPservlet,然后重写doGet和doPost方法
public class HelloServlet3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("重写doGet");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("重写doPost");
}
}
在doget和dopost中就可以写业务代码了
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取web.xml中配置的上下文参数context-param
ServletContext context = getServletConfig().getServletContext();
String username = context.getInitParameter("username");
String password = context.getInitParameter("password");
System.out.println("context-param的参数username的值是:"+username);
System.out.println("context-param的参数password的值是:"+password);
//获取当前的工程路径 格式:/工程路径
System.out.println("当前工程路径:"+context.getContextPath());
//获取工程部署后在服务器硬盘上的绝对路径
/*
/ 被服务器解析地址为:http://ip:port/工程名/ <br>
*
* */
System.out.println("工程部署的绝对路径是:"+context.getRealPath("/"));
ServletContext servletContext = getServletContext();
System.out.println("key1的值为:"+servletContext.getAttribute("key1"));
System.out.println("资源路径 URI is :"+req.getRequestURI());
System.out.println("绝对路径 URI is :"+req.getRequestURL());
System.out.println("客户端IP地址:"+req.getRemoteHost());
/*req.setCharacterEncoding("utf-8");
resp.setHeader("Content-Type","text/html;charset=UTF-8");
*/
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("writer到此一游!");
}
HttpServletRequest和HttpServletResponse一些常用方法
HttpServletRequest 常用方法
获取请求参数:
String getParameter(String name): 获取请求参数的值。
String[] getParameterValues(String name): 获取请求参数的所有值(用于复选框等)。
Enumeration<String> getParameterNames(): 获取所有请求参数的名称。
Map<String, String[]> getParameterMap(): 获取所有请求参数的映射。
获取请求信息:
String getMethod(): 获取请求的HTTP方法(如GET、POST)。
String getRequestURI(): 获取请求的URI。
String getContextPath(): 获取上下文路径。
String getServletPath(): 获取Servlet路径。
String getQueryString(): 获取查询字符串。
String getRemoteAddr(): 获取客户端的IP地址。
String getRemoteHost(): 获取客户端的主机名。
int getRemotePort(): 获取客户端的端口号。
获取请求头:
String getHeader(String name): 获取指定名称的请求头值。
Enumeration<String> getHeaderNames(): 获取所有请求头的名称。
int getIntHeader(String name): 获取整数值类型的请求头。
获取Cookie:
Cookie[] getCookies(): 获取请求中的所有Cookie。
获取属性:
Object getAttribute(String name): 获取请求属性的值。
void setAttribute(String name, Object o): 设置请求属性的值。
Enumeration<String> getAttributeNames(): 获取所有请求属性的名称。
获取请求体:
InputStream getInputStream(): 获取请求体的输入流。
HttpServletResponse 常用方法
设置响应状态码:
void setStatus(int sc): 设置响应的状态码(如200、404)。
添加响应头:
void setHeader(String name, String value): 设置响应头的值。
void addHeader(String name, String value): 添加响应头的值(多个值)。
发送重定向:
void sendRedirect(String location): 发送一个重定向响应到客户端。
设置内容类型:
void setContentType(String type): 设置响应的内容类型(如"text/html"、“application/json”)。
获取输出流:
ServletOutputStream getOutputStream(): 获取响应体的输出流。
PrintWriter getWriter(): 获取字符输出流,用于发送文本数据。
设置Cookie:
void addCookie(Cookie cookie): 添加一个Cookie到响应。
设置字符编码:
void setCharacterEncoding(String charset): 设置响应的字符编码(如UTF-8)
请求转发和请求重定向
笔记