前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Servlet一:使用Servlet

Servlet一:使用Servlet

作者头像
乐心湖
发布2020-07-31 16:41:28
1.2K0
发布2020-07-31 16:41:28
举报
文章被收录于专栏:MyTechnology

什么是 Servlet?

Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。 主要功能:

  • 创建并返回基于客户请求的动态 HTML ⻚⾯。
  • 与数据库进⾏通信。

如何使用Servlet?

Servlet 本身只是⼀组接⼝,我们需要定义⼀个类,并且实现 Servlet 接⼝,这个类就具备了接受客户端请求以及做出响应的功能。

我们到项目中去学习,新建一个MyServlet类,实现Servlet接口,重写方法

代码语言:javascript
复制
public class MyServlet 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 {
        //主要的核心,操作基本都写在这里,主要的业务实现。
    }

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

    @Override
    public void destroy() {
        //常用于释放资源
    }
}

我们在service方法中写一些代码,看看效果。

代码语言:javascript
复制
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我是servlet,我已经在工作了 !");
    }

到这里我们会有一个疑问,我们如何访问这个servlet类呢,由于浏览器并不能直接访问 Servlet ⽂件,我们只能通过映射的⽅式来间接访问 Servlet,映射需要开发者⼿动配置,有两种配置⽅式。


两种方式配置映射

基于XML文件

注意:是写在WEB-INF下的web.xml中

基于注解

直接在MyServlet类上面添加一个注解WebServlet括号中为访问地址

代码语言:javascript
复制
@WebServlet("/hello")
public class MyServlet implements Servlet{}

只要其中一种就可以了,不用同时使用。

我们到浏览器中去访问http://localhost:8080/new_javaweb_test_war_exploded/hello

页面空白,但是没有报错,所以我们成功访问了,我们到控制台查看是否有打印出一句话。

很明显,我们成功访问到了自己写的Servlet。

那么我们如何往页面中输出点东西呢,同样的,我说了功能代码都应该写在service方法中

代码语言:javascript
复制
servletResponse.getWriter().write("这里是我的Servlet,欢迎进入新世界 !");

我们加入代码后在浏览器中发现中文乱码了,这时候不用慌,我们在这句代码这前再加一句

代码语言:javascript
复制
servletResponse.setContentType("text/html;charset=UTF-8");

此时该方法完整的代码为

代码语言:javascript
复制
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我是servlet,我已经在工作了 !");
        servletResponse.setContentType("text/html;charset=UTF-8");
        servletResponse.getWriter().write("这里是我的Servlet,欢迎进入新世界 !");
    }

运行就可以看到页面输出结果啦。

使用Debug

我推荐大家使用Debug来运行项目,这样可以节省我们在启动项目的大量时间。

在idea中可以做到直接重新编译你修改的东西,而不用整个项目重新启动。

如果做到这一点,首先你要确保你开启了update classes and resources,运行项目时使用Debug。

servletRequest

细心的你不难发现,我们的service方法中还没有使用到servletRequest参数,其实这个是用来获取参数之类的。

示例:

代码语言:javascript
复制
        String id = servletRequest.getParameter("id");
        servletResponse.getWriter().write("你好,我们已经获取到你的ID为:"+id);

Debug运行,发现浏览器中显示ID为Null,此时你在地址后面加入?id=10086,就可以看到效果啦。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 Servlet?
  • 如何使用Servlet?
  • 两种方式配置映射
    • 基于XML文件
      • 基于注解
      • 使用Debug
      • servletRequest
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档