JavaWeb笔记
1.tomcat
-
tomcat 目录架构
bin: 存放各个文件下启动和停止 Tomcat 服务脚本文件
conf:存放各种 Tomcat 服务器配置文件
lib:存放 Tomcat 服务器所需要的 jar
logs:存放Tomca 服务运行日志
temp:Tomcat 运行时临时文件
webapps:存放允许客户端访问的资源
work:存放 Tomcat 将 JSP 转换后的 Servlet 文件
-
Servlet 简介
1 servlet:
Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。
2 servlet 功能:
- 创建并返回基于客户端 请求 HTML 页面。
- 与数据进行通信
3 如何使用servlet:
Servlet 本身是⼀组接⼝,⾃定义⼀个类,并且实现 Servlet 接⼝,这个类就具备了接受客户端请求以及
做出响应的功能
package com.hou.myservlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
public class ServletTset implements Servlet { //实现Servlet 接⼝
@Override
public void init(ServletConfig var1) throws ServletException{
};
@Override
public ServletConfig getServletConfig(){
return null;
};
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException{
String id=servletRequest.getParameter("id");
//在网页地址栏后面输入 ?id=100
System.out.println("我是Servlet,我已经接收到客户端发来的请求,参数是:"+id);//在控制台输出
servletResponse.setContentType("text/html;charset=UTF-8");//使中文可以正常显示/GBK
servletResponse.getWriter().write("我是中文,页面上有显示吗?");//写到页面上
};
@Override
public String getServletInfo(){
return null;
};
@Override
public void destroy(){
};
}
浏览器不能直接访问 Servlet ⽂件,只能通过映射的⽅式来间接访问 Servlet,映射需要开发者⼿动配置,有两种配置⽅式。
- 基于 XML ⽂件的配置⽅式。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.lut.myservlet.myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
</web-app>
- 基于注解的方式
@WebServlet("/demo01")
public class myservlet implements Servlet {
}
上述两种配置⽅式结果完全⼀致,将 demo2 与 HelloServlet 进⾏映射,即在浏览器地址栏中直接访问demo 就可以映射到 HelloServlet。
地址栏后面输入: /demo01 或 /demo02
2.servlet生命周期
- 当浏览器访问 Servlet 的时候, Tomcat 会查询当前 Servlet 的实例化对象是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执⾏第 3 步。
- 调用 init 初始化方法
- 调用 service 方法完成业务操作
- 关闭 Tomcat 会调用destory 方法 释放当前对象所占用的资源
servlet 生命周期方法: 无参构造函数,init,service,destory
- 无参构造只调用一次,用于创建对象(最先执行)
- init 只调用一次 用于初始化对象
- service 调用N次,执行N次业务方法
- destory 只调用一次,用于销毁当前资源
@WebServlet("/demo01")
public class myservlet implements Servlet {
public myservlet(){
System.out.println("构造函数:创建了Servlet对象");
}
public void init(ServletConfig servletConfig) throws ServletException{
System.out.println("对Servlet对象完成初始化操作...");
};
public ServletConfig getServletConfig(){
return null;
};
public void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException{
System.out.println("执行了Servlet对象的业务方法...");
};
public String getServletInfo(){
return null;
};
public void destroy(){
System.out.println("释放了Servlet对象...");
};
}
3.ServletConfig
该接⼝是⽤来描述 Servlet 的基本信息的。
getServletName() 返回 Servlet 的名称,全类名(带着包名的类名)
getInitParameter(String key) 获取 init 参数的值(web.xml)
getInitParameterNames() 返回所有的 initParamter 的 name 值,⼀般⽤作遍历初始化参数
4. ServletContext
getServletContext() 返回 ServletContext 对象,它是 Servlet 的上下⽂,整个 Servlet 的管理者
ServletConfig 和 ServletContext 的区别:⼀个是局部对象,⼀个是全局对象
ServletConfig 作⽤于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig,
ServletContext 作⽤于整个 Web 应⽤,⼀个 Web 应⽤对应⼀个 ServletContext,
多个 Servlet 实例对应⼀个ServletContext。
//实现 doGet 和 doSet
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.getWriter().write("helloGet");
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.getWriter().write("HelloPost");
}