98_JavaWeb_Servlet1

网友投稿 664 2022-05-29

Servlet

1 Servlet是JavaEE 规范之一,规范就是接口

2 Servlet就JavaWeb 三大组件之一,三大组件分别是:Servlet 程序、Filter 过滤器、Listener -

3 Servlet是运行在服务器上的一个java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端

实现 Servlet 程序

1 编写一个类去实现 Servlet 接口

2 实现 service 方法,处理请求,并响应数据

3 到 web.xml 中去配置 servlet 程序的访问地址

Servlet 的生命周期

第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。

1 执行 Servlet 构造器方法

2 执行 init 初始化方法

3 执行 service 方法 每次访问都会调用

4 执行 destroy 销毁方法 在 web 工程停止的时候

public class HelloServlet implements Servlet { public HelloServlet() { System.out.println("1 构造器方法"); } @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("2 init初始化方法"); // 1、可以获取Servlet程序的别名servlet-name的值 System.out.println("HelloServlet程序的别名是:" + servletConfig.getServletName()); // 2、获取初始化参数init-param System.out.println("初始化参数username的值是;" + servletConfig.getInitParameter("username")); System.out.println("初始化参数url的值是;" + servletConfig.getInitParameter("url")); // 3、获取ServletContext对象 System.out.println(servletConfig.getServletContext()); } @Override public ServletConfig getServletConfig() { return null; } /** * service方法是专门用来处理请求和响应的 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("3 service === Hello Servlet 被访问了"); // 类型转换(因为它有getMethod()方法) HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; // 获取请求的方式 String method = httpServletRequest.getMethod(); //httpServletRequest是 ServletRequest 子类 if ("GET".equals(method)) { doGet(); } else if ("POST".equals(method)) { doPost(); } } /** * 做get请求的操作 */ public void doGet(){ System.out.println("get请求"); System.out.println("get请求"); } /** * 做post请求的操作 */ public void doPost(){ System.out.println("post请求"); System.out.println("post请求"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("4 . destroy销毁方法"); } }

IDEA生成

public class Servlet2Test1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("hello3doPost"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("hello3doGet"); } }

ServletConfig类

ServletConfig 类: Servlet程序的配置信息类。

Servlet程序和ServletConfig对象都是由Tomcat负责创建

Servlet程序默认是第一次访问的时候创建,ServletConfig 是每个Servlet程序创建时,就创建一个对应的ServletConfig对象

ServletConfig 类的三大作用

1 可以获取 Servlet程序的别名servlet-name 的值

2 获取初始化参数 init-param

3 获取 ServletContext对

@Override public void init(ServletConfig config) throws ServletException { super.init(config); // 方式1 config.getServletName() config.getInitParameter // 1、可以获取Servlet程序的别名servlet-name的值 System.out.println("HelloServlet程序的别名是:" + config.getServletName()); //Servlet程序和ServletConfig对象都是由Tomcat负责创建 // 2、获取初始化参数init-param System.out.println("初始化参数username的值是;"+config.getInitParameter("username")); System.out.println("初始化参数url的值是;" + config.getInitParameter("url")); // 3、获取ServletContext对象 System.out.println(config.getServletContext()); // 方式2 getServletConfig(); ServletConfig servletConfig = getServletConfig(); System.out.println("范式2初始化参数username的值是;" + servletConfig.getInitParameter("username")); }

HelloServlet com.alex.servlet.HelloServlet username root url jdbc:mysql://localhost:3306/test

ServletContext

1 ServletContext 是一个接口,它表示 Servlet 上下文对象

2 一个web工程,只有一个ServletContext对象实例

3 ServletContext对象是一个域对象

4 ServletContext 是在web工程部署启动的时候创建, 在web工程停止的时候销毁。

域对象,是可以像 Map一样存取数据的对象,叫域对象 这里的域指的是存取数据的操作范围,整个 web 工程

存数据            取数据              删除数据

98_JavaWeb_Servlet1

Map            put()                 get()                   remove()

域对象        setAttribute()   getAttribute()     removeAttribute();

ServletContext 类的四个作用

1 获取 web.xml 中配置的上下文参数 context-param

2 获取当前的工程路径,格式: /工程路径

3 获取工程部署后在服务器硬盘上的绝对路径

4 像 Map 一样存取数据

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 方式一 获取 context getServletContext() // 获取ServletContext对象 ServletContext context = getServletContext(); System.out.println(context); System.out.println("保存之前: Context1 获取 key1的值是:"+ context.getAttribute("key1")); //读数据 context.setAttribute("key1", "value1"); //存数据 System.out.println("Context1 中获取域数据key1的值是:"+ context.getAttribute("key1")); }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 方式2 : 获取context getServletConfig().getServletContext() // 1、获取web.xml中配置的上下文参数context-param ServletContext context = getServletConfig().getServletContext(); String username = context.getInitParameter("username"); // System.out.println("context-param参数username的值是:" + username); // System.out.println("context-param参数password的值是:" + context.getInitParameter("password")); // 2、获取当前的工程路径,格式: /工程路径 System.out.println( "当前工程路径:" + context.getContextPath() ); // 3、获取工程部署后在服务器硬盘上的绝对路径 /** * / 斜杠被服务器解析地址为:http://ip:port/工程名/ 映射到IDEA代码的web目录
*/ System.out.println("工程部署的路径是:" + context.getRealPath("/")); // System.out.println("工程下css目录的绝对路径是:" + context.getRealPath("/css")); // System.out.println("工程下imgs目录1.jpg的绝对路径是:" + context.getRealPath("/imgs/1.jpg")); }

username context password root

Java Servlet web前端

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python:Python技巧之80个经典题——课程笔记(一)
下一篇:Redis09-Redis事务
相关文章