• Servlet简单项目操作


    1.1Servlet简介

    Servlet就是sun公司开发动态web的一门技术

    Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:

    (1)编写一个类,实现Servlet接口

    (2)把开发好的java类部署到web服务器中。

    把实现了Servlet接口的java程序叫做,Servlet。

    1.2HelloServlet

    Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet。

    1.构建一个普通的Maven项目,(在前面的Maven详解里面已经详细阐释了如何创建Maven项目),删掉里面的src目录。以后我们的学习就在这个项目里面建立Moudle;这个空的工程就是Maven的主工程。

    pom.xml为Maven的核心配置文件,后缀名为.iml的为IDEA的识别文件,.idea为IDEA的配置文件,这些都无法删除,src为java和Maven项目的一些东西,这个可以进行删除。 

    主工程里面我们可以尽可能的将所需要的依赖导入进去。如下所示:

    我们寻找所需要的最新版本的依赖,我们可以通过如下方式进行搜索。我们进行搜索

     我们发现其中的javax.servlet-api,它的包为javax.servlet-api,我们点击网址https://mvnrepository.com,进行搜索javax.servlet-api,如下所示:

     点击javax.servlet-api,之后我们发现如下所示:

     我们点击4.0.1,进入如下所示:

    1. javax.servlet
    2. javax.servlet-api
    3. 4.0.1
    4. provided

    我们将代码复制下来即可,将其放入依赖里面:

    我们还有一个需要导入:jsp-api,我们采用同样的方法进行搜索:

    我们选择 javax.servlet.jsp,即为javax.servlet.jsp里面的,我们点击第一个里面的即可。我们选择2.3.3版本。

     我们复制代码如下所示:

    1. javax.servlet.jsp
    2. javax.servlet.jsp-api
    3. 2.3.3
    4. provided

    我们复制完成之后,我们的核心代码是如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. "http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. 4.0.0
    6. org.example
    7. untitled2
    8. 1.0-SNAPSHOT
    9. 8
    10. 8
    11. javax.servlet
    12. javax.servlet-api
    13. 4.0.1
    14. provided
    15. javax.servlet.jsp
    16. javax.servlet.jsp-api
    17. 2.3.3
    18. provided

    如果在这个过程中出现爆红,我们点击刷新即可。

    如果我们刷新之后仍然没有解决问题,我们可以删除provided, javax.servlet.jsp-api改为 jsp-api,即会自动进行下载。如果仍然有问题,我们可以降低版本进行下载。这是针对后一个依赖进行的。

    如果仍然有问题,我们点击本地仓库,如下所示的文件夹,找到所对应的文件jar包,即可发现存在版本的jar包,进行修改对应的文件即可。

     如果对应文件没有,我们可以进行手动下载,点击jar包(罐子),进行下载即可:

     下载完成之后,丢到对应文件夹即可。

    我们发现,文件已经成功导入 。

    如果仍然没有得到解决,我们点击File,点击Project Structure.点击Problems,有问题的话点击修复(Fix)就可以啦。

     我们接下来创建一个Servlet项目,需要先new一个项目,在这个主项目里面进行创建模板的web项目。Servlet是一个Web项目。

     我们创建完成之后如下所示:

    我们会发现多了一个项目。 

    2.关于Maven父子工程的理解:

    父项目中会有:

    1. <module>untitledmodule>

    子项目中会有:

    1. untitled2
    2. org.example
    3. 1.0-SNAPSHOT

    父项目中的java,子项目可以直接使用。

    son extends father,son拥有父亲的全部指令,但是son自己的东西,father并不能全部使用。

    对于这个web项目,我们第一步首先将webapp里面的web.xml进行修改,由于这个太老,我们可以从tomcat文件里面的web.xml进行·修改:

    我们修改后的代码如下所示:

    1. "1.0" encoding="UTF-8"?>
    2. "http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    5. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    6. version="3.1"
    7. metadata-complete="true">

    之后我们将main项目结构创建好,缺java和resources,我们进行创建如下所示:

    我们点击Directory,

    3.Maven环境优化 

        1.修改web.xml为最新的

        2.将Maven的结构搭建完整

    4.编写一个Servlet程序

    如果是一个Servlet程序,我们一定要继承一个Servlet接口

    我们点击这个Maven,进行刷新即可发现。

     我们进行创建即可如下所示:

     1.编写一个普通类

    2.实现Servlet接口,这里我们直接继承HttpServlet,

     我们点击public后面的HttpServlet,点击ctrl+鼠标左键,即可看到源码。

     我们从所继承的父类GenericServlet,我们来进行查看源码。

     这个源码我们看待实现了Servlet接口。

    我们的结构如下所示:

     我们查看Servlet的代码如下所示:

    我们对该代码进行分析:

    1. //
    2. // Source code recreated from a .class file by IntelliJ IDEA
    3. // (powered by FernFlower decompiler)
    4. //
    5. package javax.servlet;
    6. import java.io.IOException;
    7. public interface Servlet {
    8. void init(ServletConfig var1) throws ServletException; //init为初始化
    9. ServletConfig getServletConfig(); //获得Servlet配置
    10. void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; //Request为请求 Response为响应
    11. String getServletInfo(); //获得Servlet信息
    12. void destroy(); //销毁
    13. }

    我们经过对源码的分析,我们了解到需要对Helloservlet里面的方法进行重写。

    我们点击ctrl+O,即可找到重写的方法,我们选择doGet和doPost,我们按住ctrl,即可进行选择多个方法。而按住shift键即可选择多个连在一起的需要重写的方法。

     这是我们可以互相调用代码的体现:

    1. package com.rgf.servlet;
    2. import javax.servlet.*;
    3. import javax.servlet.http.*;
    4. import javax.servlet.annotation.*;
    5. import java.io.IOException;
    6. import javax.servlet.http.HttpServlet;
    7. @WebServlet(name = "HelloServlet", value = "/HelloServlet")
    8. public class HelloServlet extends HttpServlet {
    9. //由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
    10. @Override
    11. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    12. super.doGet(req, resp);
    13. }
    14. @Override
    15. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. doGet(req, resp);
    17. }
    18. }

    我们进行new一个对象的时候的快捷键为alter+enter,

    我们所创建的类如下所示:

    1. package com.rgf.servlet;
    2. import javax.servlet.*;
    3. import javax.servlet.http.*;
    4. import javax.servlet.annotation.*;
    5. import java.io.IOException;
    6. import java.io.PrintWriter;
    7. import javax.servlet.http.HttpServlet;
    8. @WebServlet(name = "HelloServlet", value = "/HelloServlet")
    9. public class HelloServlet extends HttpServlet {
    10. //由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
    11. @Override
    12. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13. // ServletOutputStream outputStream = resp.getOutputStream();
    14. // 作为一个自学能力强的人来说,我们会联想到输出可以得到,输入难道不能得到么?
    15. //我们联想进行尝试如下所示:
    16. ServletInputStream inputStream = req.getInputStream();//输入流
    17. PrintWriter writer = resp.getWriter();//响应流,往外面写东西
    18. writer.print("Hello,Servlet");
    19. }
    20. @Override
    21. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    22. doGet(req, resp);
    23. }
    24. }

    5.编写Servlet的映射

    为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;

    下面代码为src文件夹下面的webapps里面的web.xml文件里面的。

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    4. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    5. version="3.1"
    6. metadata-complete="true">
    7. <servlet>
    8. <servlet-name>helloservlet-name>
    9. <servlet-class>com.rgf.servlet.HelloServletservlet-class>
    10. servlet>
    11. <servlet-mapping>
    12. <servlet-name>helloservlet-name>
    13. <url-pattern>/hellourl-pattern>
    14. servlet-mapping>
    15. web-app>

    6.配置Tomcat. (我们在前一篇文章里面进行过详细见解)

    点击此处Maven与IDEA的联系与详解_蕾峰的博客-CSDN博客_maven与idea的关系。我们即可知道。

    点击上面的+号:

     

      我们设置完毕之后进入如下所示:

     注意:配置项目发布的路径就可以了。

    7.启动测试

     我们点击运行之后,我们会发现多了一个文件夹,这个所出现的untitled.war即为我们的一个·网址,其中META-INF为项目的一些信息:

    而WEB-INF为咱们所写的那个类。

    web.xml为咱们的一些配置。

    我们在网址里面输入http://localhost:9571/untitled_war/hello

     即成功进入里面。

    我们进入后台进行查看发现成功出现了进入doGet方法。 

    这即为成功的完成了一个Servlet项目。

     

  • 相关阅读:
    php使用kafka实现消息队列处理
    【云原生网关】Kong 使用详解
    SpringCloud的新闻资讯项目08 --- 平台管理-需求说明和接口文档
    C#:如何查看.net core版本?
    FPGA CFGBVS 管脚接法
    14_C++_面向对象_类和对象_封装
    go 学习01
    Spring——注解实现自动装配
    最近公共祖先(LCA)
    牛客网—栈的压入、弹出序列
  • 原文地址:https://blog.csdn.net/weixin_59448049/article/details/126144109