【Java】Servlet

版本:idea2021.2.3

1.使用servlet

1.Java Enterprise创建JavaWeb工程

自带tomcat,生成的是HttpServlet,不是Servlet

结构

时间在前进,就不要想以前了,idea2021.2.3,可是,不带pom文件的创建方式呢?

自动生成了项目结构以及代码,是webapp,最低版本javaee8,resources目录现在还不需要也生成了。

创建javaweb项目,选择Java Enterprise

2.Java创建JavaWeb工程

 1.配置文件方式实现

package com.jcli.demo01_入门;

import javax.servlet.*;
import java.io.IOException;
//配置文件方式
public class ServletDemo01 implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // 每次访问Servlet都会执行Servlet里面的service方法
        // eg:每次访问ServletDemo1就会来到这里
        System.out.println("ServletDemo01~~~");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

web.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">
<!--    配置servletdemo01的路径-->
    <servlet>
        <servlet-name>demo01</servlet-name>
        <servlet-class>com.jcli.demo01_入门.ServletDemo01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo01</servlet-name>
        <url-pattern>/demo01</url-pattern>
    </servlet-mapping>
</web-app>

 http://localhost:8080/servlet07/demo01

 

2.注解方式

package com.jcli.demo01_入门;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo02")
public class ServletDemo02 implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("ServletDemo2...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
  • xml方式

    • 创建一个类实现Servlet接口

    • 在web.xml配置servlet

  • 注解方式

    • 创建一个类实现Servlet接口

    • 在类上面添加@WebServlet("访问的路径")

3.extends GenericServlet

package com.jcli.demo02_进阶;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/demo03")
public class ServletDemo03 extends GenericServlet {
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("ServletDemo3...");
    }
}

 4.extends HttpServlet

package com.jcli.demo02_进阶;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/demo04")
public class ServletDemo04 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("ServletDemo4 get请求...");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("ServletDemo4 post请求...");

    }
}

或者快捷生成

3.ServletContext概述

servletContext概述

ServletContext: 是一个全局上下文对象.

服务器为每一个应用(项目)都创建了一个ServletContext对象。 ServletContext属于整个应用的,不局限于某个Servlet。

ServletContext作用

作为域对象存取数据,让Servlet共享

获得文件MIME类型(文件下载)

获得全局初始化参数

获取web资源路径

4.统计网站被访问的总次数

package com.jcli.demo04_count;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/count")
public class CountServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    //    1.存count=0
        getServletContext().setAttribute("count",0);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //2.取出count++
        int count = (int) getServletContext().getAttribute("count");
        count++;
    //    3.再存进去
        getServletContext().setAttribute("count",count);
        resp.getWriter().print("<h1>Welcome</h1>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
package com.jcli.demo04_count;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/show")
public class ShowServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理响应乱码
        resp.setContentType("text/html;charset=utf-8");

        //4.取出来展示
        int count = (int) getServletContext().getAttribute("count");
        resp.getWriter().print("您是第"+count+"位访问的!");

    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值