IDEA开发servlet

Posted 向阳-Y.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA开发servlet相关的知识,希望对你有一定的参考价值。

目录

IDEA快捷键

alt+enter快速生成方法
.sout快速生成print方法
.notnull快速生成结构化if判断语句

开发servlet

新建一个New工程,这里直接点下一步

创建一个projectname为servlet01

目前只是一个空项目,只能做一些简答的文件编写,所以继续添加框架支持

添加完成后来尝试开发一个StudentServlet,内容如下;

package com.xy.javaweb.servlet;
public class StudentServlet implements Servlet 

环境依赖

此时会提示我们并没有Servlet这个接口,所以我们需要将依赖servlet api.jar加入
依赖添加方法:
项目结构–>模块–>依赖

中间部分省略…
servlet代码如下

package com.xy.javaweb.servlet;

import jakarta.servlet.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;

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 
        //设置响应类型内容
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        //连接数据库JDBC
        Connection conn =null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try 
            //注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //获取连接
            String url = "jdbc:mysql://localhost:3306/jdbc";
            String user = "root";
            String password = "redhat";
            conn = DriverManager.getConnection(url,user,password);
            //获取预编译的数据库操作对象
            String sql = "select id, name from t_student";
            ps = conn.prepareStatement(sql);
            //执行SQL
            rs = ps.executeQuery();
            //处理数据集
            while(rs.next())
                String id = rs.getString("id");
                String name = rs.getString("name");
                out.println(id+","+name+"<br>");
            
         catch (ClassNotFoundException | SQLException e) 
            e.printStackTrace();
        finally 
            //释放资源
            //输入rs.notnull会自动弹出下列结构
            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() 

    


index.html代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
 <!-----这里的项目名是/xmm。无法动态获取,先写死-->
 <a href="/xmm/servlet/student">student list</a>
</body>
</html>

关键步骤,关联tomcat并配置项目名:

servlet 对象生命周期

如果在servlet配置文件中添加了<load-on-startup>子标签,越小的子标签优先级越大

    <servlet>
        <servlet-name>aservlet</servlet-name>
        <servlet-class>com.xy.javaweb.servlet.Aservlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>

创建了该标签后,servlet会在服务器启动时会被创建出来【默认情况下,服务器不会去实例化对象,要等用户访问该servlet才会被实例化】


serlvet有5个方法,这里我们拿出来三个做案例
public void init()
public void service()
public void destroy()
1.当有用户访问了servlet时,首先会去执行一个无参数构造方法,例如:

public Aservlet()
	System.out.println("这个是无参数构造方法");

2.接着再去执行init(),用来初始化对象
上面两个方法都仅仅执行一遍,接下来再次刷新servlet的访问时,只会调用到service()方法

3.最后,当关闭tomcat服务器时,则会调用destroy()方法,用来释放内存


提问:
init方法为什么存在,他和无参构造方法有什么关系?
答:init方法就是为了代替构造方法,因为人工去写构造方法可能会定义不当(例如写成有参构造),导致无法进行实例化。
servlet规范中,不建议用户自己去构建构造方法,所以提供了init

以上是关于IDEA开发servlet的主要内容,如果未能解决你的问题,请参考以下文章

坑向: 关于在IDEA中 以XML形式 实现Spring AOP编程时,在xml配置文件中给 连接点的前置通知before 传递参数时出现Unbound pointcut parameter错误的排查

IDEA 配置Tomcat运行Servlet项目

基于IDEA+Tomcat+Servlet+JDBC开发的在线选房系统

idea servlet不能创建main方法?

spring 整合 servlet

手摸手教会你在idea中配置Tomcat进行servlet/jsp开发(多图超详)