Java教程

JavaWeb--03.Servlet

本文主要是介绍JavaWeb--03.Servlet,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JavaWeb–03

Servlet

目录

  • JavaWeb--03
  • Servlet
  • 前言
  • 创建第一个Servlet
    • (1).方式一,实现Servlet接口
    • (2).方式二,继承HttpServlet类


前言

21世纪,走进了信息时代,各种各样的软件层出不穷,但是总离不开程序开发,离不开程序开发语言,Java语言作为人们所熟知的一门语言,对于其有必要进行系统的学习。


Servet是Java的一个接口,用于定义网站前端数据与数据库数据进行交互所用到的方法规范,也就是后端,其运行在服务器上;

创建第一个Servlet

(1).方式一,实现Servlet接口

Servlet是一个接口,实现接口需要实现其未实现的抽象方法;其中init方法是在servlet初始化时调用,service是处理请求时调用,destroy方式是在服务器关闭时调用;
public class ServletDemo implements Servlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("--init--");
    }

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


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

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

    @Override
    public void destroy() {
        System.out.println("--destroy--");
    }
}

除了Servlet实现类写完后,还需要在WEB-INF下的web.xml进行配置,一个servlet可以配置多个servlet-mapping

	<!--一个servlet与其对应的servlet-mapping共同构成一组映射,将url映射为对应的Servlet类-->
    <servlet>
        <servlet-name>demo</servlet-name><!--配置servlet的名称,即别名,用于区分不同的servlet-->
        <servlet-class>com.company.project.servlet.ServletDemo</servlet-class><!--servlet类对应的全类名-->
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name><!--配置需要映射的servlet名称-->
        <url-pattern>/demo</url-pattern><!--配置映射的url-->
    </servlet-mapping>

或者使用注解的方式,即在Servlet实现类上使用WebServlet注解

//name与上面定义的name一样,用于区别,urlPatterns即上面的映射url
@WebServlet(name = "demo",urlPatterns = "/demo")
public class ServletDemo implements Servlet {
}

配置结束,则可以运行项目,在浏览器输入localhost:8080/JavaWebDemo/demo进行访问,可以在控制台看到其输出:

在访问其对应的映射url时,其第一次访问,进行了初始化,接着执行了service中的代码;
在这里插入图片描述

在服务器关闭时,执行了destroy方法
在这里插入图片描述

(2).方式二,继承HttpServlet类

HttpServlet类继承自GenericServlet类,而GenericServlet实现了Servlet接口;
在这里插入图片描述在方式一中可以看到其共有5个成员方法需要重写,但是实际起作用,用于数据交互的主要是service方法,重写5个方法过于繁杂,故可以选择继承HttpServlet:

@WebServlet(name = "login", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doGet方法--");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doPost方法--");
    }
}

继承HttpServlet后,可以选择重写其方法,其中有Servlet中未包装的service方法,以及包装过后的一系列doXxx方法,一般网站请求都为get或者post,故重写其doGet与doPost就基本可以满足需求;
在这里插入图片描述运行程序,在浏览器地址栏输入localhost:8080/JavaWebDemo/login
此时,会执行doGet方法:
在这里插入图片描述
在webapp下新建一个login.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<div align="center">
    <form action="login" method="post">
        用户名:<input type="text" name="username" value="" placeholder="请输入用户名"><br/>
        密码:<input type="text" name="password" value="" placeholder="请输入密码"><br/>
        <input type="submit" value="登录"><br/>
    </form>
</div>

</body>
</html>

在浏览器访问localhost:8080/JavaWebDemo/login.html
在这里插入图片描述点击登录,即可看到:
在这里插入图片描述

笔记如有错误,遗漏之处,欢迎指正!

这篇关于JavaWeb--03.Servlet的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!