idea开发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 
studentServlat
//这个位置必须是带有暴民的全限定类名com.java.servlet.StudentServlet//servelt映射信息
//这里也不是随便写的,这里写的内容要和上边的一样studentServlat
//这里需要一个路径,这个路径唯一的要求是必须以/开头
//当前这个路径是随便写的/servlet/student

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

  • studnet.html(这个只能在WEB-INF外边创建)
  •  stude.html文件内容


student page



student list

第十步:让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 找到=servlet/student

然后在找到 = studentServlet

根据上面的在找到 = studentServlet

在找到中  = com.java.servlet.StudentServlet

最后执行StudentServlet里的内容

public class StudentServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {
//        设置响应的内容类型是普通文本还是htmlresponse.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+","+"
");}} 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();}}}}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {} }

 web-xml


studentServletcom.java.servlet.StudentServletstudentServlet/servlet/student

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标签中添加正整数(数越小优先级越高)

Servlet接口中方法调用顺序

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

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

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部