我是靠谱客的博主 酷酷唇彩,最近开发中收集的这篇文章主要介绍idea开发Servlet实现和方法的解释Servlet规范是什么规范关于javaEE的版本使用开发工具开发一个ServletServelt常见问题Servlet接口中方法调用顺序Servlet接口中的方法什么时候使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

Servlet规范是什么规范

关于javaEE的版本

使用开发工具开发一个Servlet

响应步骤

Servelt常见问题

什么是Servelt生命周期

Servelt是由谁来维护的

生命周期描述(重要面试) 

Servlet接口中方法调用顺序

Servlet接口中的方法什么时候使用


Servlet规范是什么规范

  • 遵循Servlet规范的webapp,这个webapp就可以放在不同的WEB服务器中运行。(因为这个webapp是遵循Servlet规范的)
  • Servlet规范包括什么
  1. 规范了哪些接口
  2. 规范了哪些类
  3. 规范了一个web应用中应该由哪些配置文件
  4. 规范了一个web应用中配置文件的名字
  5. 规范了一个web应用中配置文件存放路径
  6. 规范了一个web应用中配置文件的内容
  7. 规范了一个合法有效的web应用他的目录结构应该是怎样的

关于javaEE的版本

  • javaEE目前最高版本是javaEE8
  • javaEE被Oracle建献给了Apache后改名叫jakartaEE,所以以后没有javaEE,以后都叫jakartaEE
  • javaEE8时对应的Srevlet类名称:javax.servlet。Servlet
  • 但javaEE9时对应的Servlet类名是jakarta.servlet.Servlet
  • 如果你之前的项目还在使用javax.servlet。Servlet那么你的项目无法直接在Tomcat10+版本上部署。只能部署到Tomcat9及之前的版本

使用开发工具开发一个Servlet

第一步:创建一个java工程,在工程里创建一个web项目

第二步:编写Servlet(StudentServlet)

  • 因为StudentServlet要实现Servlet接口(class StudentServlet implements Servlet)
  • 这个时候发现Servlet.class文件没有,程序报错。此时应将lib/servlet-api.jar和jsp-api.jar添加到classpath当中
  • 实现jakarta中的五个方法

第六步:在Servlet中service方法中编写业务代码(这里连接数据库)

第七步:在WEB-INF目录下建立了一个子目录lib(这个目录名不能随意写,必须是全部小写的lib)并且将连接数据库的jar包放到lib目录下(可以直接复制自己的数据库jar包,直接粘贴到lib目录下)

第八步:在web.xml文件中完成StudentServlet类的注册。(请求路径和Servlet之间对应起来)

//servlet描述信息
//任何一个servlet都对应一个servlrt-mapping 
<servlet>
        <servlet-name>studentServlat</servlet-name>
//这个位置必须是带有暴民的全限定类名
        <servlet-class>com.java.servlet.StudentServlet</servlet-class>
    </servlet>

//servelt映射信息
    <servlet-mapping>
//这里也不是随便写的,这里写的内容要和上边的一样
        <servlet-name>studentServlat</servlet-name>
//这里需要一个路径,这个路径唯一的要求是必须以/开头
//当前这个路径是随便写的
        <url-pattern>/servlet/student</url-pattern>
    </servlet-mapping>

第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet

  • studnet.html(这个只能在WEB-INF外边创建)
  •  stude.html文件内容
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
<!--超链接中的URL格式:/项目名/连接-->
<a href="/xmm/servlet/student">student list</a>
</body>
</html>

第十步:让idea工具去关联Tomcat服务器,关联的过程当中将webapp部署到Tomcat服务器当中

锤子旁边有一个add,我的配置好了显示的tomcat,点击它

 

 选择+里的tomcatservlet--local

点击 configure

 选择包含bin、conf、lib的宗文佳佳即可

 第十一步:启动Tomcat服务器

  • 在右上角有绿色小虫子或箭头,点击这个小虫子,可以采用debug模式启动Tomcat
  • 我们在开发中建议使用debug模式启动Tomcat

第十二步:打开浏览器,在浏览器地址栏输入:http://localhost:8080/xmm/student.html

具体代码 

程序里共有五个方法,这五个方法都是Servlet接口要实现的方法。(五个方法的用法在下边有解释。)发现这五个方法我们只用到了一个方法,其他方法用不到,写上去代码很繁琐,所以我们要简化以下,简化步骤在下一章。

响应步骤

用户发送请求servlet/student

项目中,web-xml 找到<url-pattern>=servlet/student

然后在找到<servlet-mapping> 中<servlet-name> = studentServlet

根据上面的在找到<servlet>中<servlet-name> = studentServlet

在找到<servlet>中  <servlet-class> = com.java.servlet.StudentServlet

最后执行StudentServlet里的内容

public class StudentServlet implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
//        设置响应的内容类型是普通文本还是html
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
//        连接数据路
//        注册驱动

        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            //        获取链接

            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT","root","123456");

//        获取数据库操作对象
        String str = "select id from student";
          ps =  conn.prepareStatement(str);

//        执行SQL语句
            rs = ps.executeQuery();

//        处理查询结果集
            while(rs.next()){
                String no = rs.getString("id");
                out.print(no+","+"<br>");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //        释放资源
            if(rs !=null){
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(ps !=null){
                try {
                    ps.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }



    }

    @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">
    <servlet>
        <servlet-name>studentServlet</servlet-name>
        <servlet-class>com.java.servlet.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>studentServlet</servlet-name>
        <url-pattern>/servlet/student</url-pattern>
    </servlet-mapping>
</web-app>

student.html

Servelt常见问题

什么是Servelt生命周期

  • Servelt对象什么时候被创建
  • Servelt对象什么时候被销毁
  • Servelt对象创建了几个
  • Servelt对象的生命周期表示:一个Servelt对象从出生到死亡,整个过程是怎样的

Servelt是由谁来维护的

  • Servelt对象的创建,对象上方法的调用。对象最终的销毁,javaweb程序员是无权干涉的
  • Servelt对象的生命周期是由Tomcat服务器全权负责
  • Tomcat服务器幼教web容器,用来管理Servelt对象的死活

生命周期描述(重要面试) 

客户端先发送请求,然后新xml文件解析,窃喜后可以知道应该走那个Selvert,就会创建Selvert对象实例,然后调用init方法进行初始化。然后调用处理请求的方法(doget、dopost)selvert方法,输出响应信息返回给客户端,第二次返回来之后。会直接走处理请求的方法。服务器关闭时会调用destory方法

我们自己new的Servelt对象受web容器的管理吗

  • 不受
  • web容器创建的Servelt对象被放到一个集合中(HashMap),只有这里边的才会被管理

服务器启动时,Servelt对象有没有被创建出来

  • 在Servelt中提供一个无参构造器,启动市没有执行,说明没有创建

怎样让服务器启动时创建一个Servelt对象

  • 在Servelt标签中添加<load-n-startup>正整数<load-n-startup>(数越小优先级越高)

Servlet接口中方法调用顺序

  • 构造器方法(创建对象,只执行一次)
  • 创建对象后调用init方法(只执行一次)
  • 调用service方法,每次发送请求就会调用一次
  • Tomcat关闭时调用destory方法,执行时并不会销毁对象内存,执行结束后会销毁对象内存,该方法只执行一次。

Servlet接口中的方法什么时候使用

  • 使用最多的是Servlet方法,这个方法是一定要实现的,应为他是处理用户请求的核心方法
  • init方法很少用,通常有只需要执行一次的初始化操作时才使用。例如:初始化数据库连接池,初始化线程池等
  • destory方法也很少用在马上对象要被销毁,还有什么没关闭的,需要抓紧时间关闭资源时,或需要抓紧时间保存资源时使用。

最后

以上就是酷酷唇彩为你收集整理的idea开发Servlet实现和方法的解释Servlet规范是什么规范关于javaEE的版本使用开发工具开发一个ServletServelt常见问题Servlet接口中方法调用顺序Servlet接口中的方法什么时候使用的全部内容,希望文章能够帮你解决idea开发Servlet实现和方法的解释Servlet规范是什么规范关于javaEE的版本使用开发工具开发一个ServletServelt常见问题Servlet接口中方法调用顺序Servlet接口中的方法什么时候使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部