idea开发Servlet实现和方法的解释
目录
Servlet规范是什么规范
关于javaEE的版本
使用开发工具开发一个Servlet
响应步骤
Servelt常见问题
什么是Servelt生命周期
Servelt是由谁来维护的
生命周期描述(重要面试)
Servlet接口中方法调用顺序
Servlet接口中的方法什么时候使用
Servlet规范是什么规范
- 遵循Servlet规范的webapp,这个webapp就可以放在不同的WEB服务器中运行。(因为这个webapp是遵循Servlet规范的)
- Servlet规范包括什么
- 规范了哪些接口
- 规范了哪些类
- 规范了一个web应用中应该由哪些配置文件
- 规范了一个web应用中配置文件的名字
- 规范了一个web应用中配置文件存放路径
- 规范了一个web应用中配置文件的内容
- 规范了一个合法有效的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
studentServlet com.java.servlet.StudentServlet studentServlet /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方法也很少用在马上对象要被销毁,还有什么没关闭的,需要抓紧时间关闭资源时,或需要抓紧时间保存资源时使用。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!