老杜 JavaWeb 讲解(五) ——在IDEA中开发Servlet小程序

老杜 JavaWeb 讲解

对应视频:

09-使用IDEA工具开发Servlet

(七) 在IDEA中开发Servlet小程序

7.1 IDEA介绍

IntelliJ IDEA 是一款由 JetBrains 公司开发的 Java 集成开发环境 (IDE),它是目前市场上较为受欢迎的 Java IDE 之一。IntelliJ IDEA 不仅支持 Java 开发,还提供了对 Kotlin、Groovy、Scala、Android 和其他多种语言和框架的良好支持。其中,对于 Kotlin 开发的支持尤其突出,由于 JetBrains 公司本身也是 Kotlin 的开发者,因此 IntelliJ IDEA 对 Kotlin 的支持非常完善。

IntelliJ IDEA 的功能特点也非常丰富,包括但不限于:自动完成、代码导航、重构、调试、测试等。此外,它还提供了强大的插件系统,可以根据自己的需要集成大量的插件和工具,以满足不同开发者的需求。

值得一提的是,IntelliJ IDEA 的代码智能提示和代码审查功能非常出色,可以帮助开发者在编写代码时避免犯错,并且可以优化代码结构,提高代码质量和可读性。此外,它还提供了许多实用工具,例如版本控制、数据库浏览器等,方便开发者进行协作和管理项目。

总之,IntelliJ IDEA 提供了非常强大的功能和工具,能极大地提高开发效率,并且易于学习和使用。

7.2 具体操作步骤:

  • 第一步:New Project(可以先创建一个Empty Project【空工程】,然后在空工程下新建Module【模块】),这个Empty Project起名为:javaweb(不是必须的,只是一个名字而已。一般情况下新建的Project的名字最好和目录的名字一致。)

  • 第二步:新建模块(File --> new --> Module...)

    • 这里新建的是一个普通的JavaSE模块(这里先不要新建Java Enterprise模块)
    • 这个Module自动会被放在javaweb的project下面。
    • 这个Module起名:servlet01
  • 第三步:让Module变成JavaEE的模块。(让Module变成webapp的模块。符合webapp规范。符合Servlet规范的Module)

    • 在Module上点击右键:Add Framework Support...(添加框架支持)
    • 在弹出的窗口中,选择Web Application(选择的是webapp的支持)
    • 选择了这个webapp的支持之后,IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。
    • 重点,需要注意的:在IDEA工具中根据Web Application模板生成的目录中有一个web目录,这个目录就代表webapp的根
  • 第四步(非必须):根据Web Application生成的资源中有index.jsp文件,这里我选择删除这个index.jsp文件。

  • 第五步:编写Servlet(StudentServlet)

    • class StudentServlet implements Servlet
    • 这个时候发现Servlet.class文件没有。怎么办?将CATALINA_HOME/lib/servlet-api.jar和jsp-api.jar添加到classpath当中(这里的classpath说的是IDEA的classpath)
      • File --> Project Structrue --> Modules --> + 加号 --> Add JARS....
    • 实现jakarta.servlet.Servlet接口中的5个方法。
  • 第六步:在Servlet当中的service方法中编写业务代码(我们这里连接数据库。)

    具体代码(StudentServlet.java):

    package com.ZWM.javaweb.servlet;
    
    import jakarta.servlet.*;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.*;
    
    /**
     * @author 猪无名
     * @date 2023/4/29 02 58
     * discription:
     */
    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/zwm";
                String user = "root";
                String password = "root";
                conn = DriverManager.getConnection(url,user,password);
                //获取预编译的数据库操作对象
                String sql = "select no,name from t_student";
                ps = conn.prepareStatement(sql);
                //执行SQL
                rs = ps.executeQuery();
                //处理结果集
                while(rs.next()){
                    String no = rs.getString("no");
                    String name = rs.getString("name");
                    out.print(no+","+name+"<br>");
                }
    
            } catch (ClassNotFoundException | SQLException e) {
                throw new RuntimeException(e);
            }finally {
                if(rs != null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }
    
                if(ps != null){
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }
    
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }
    
            }
    
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
    
  • 第七步:在WEB-INF目录下新建了一个子目录:lib(这个目录名可不能随意,必须是全部小写的lib),并且将连接数据库的驱动jar包放到lib目录下。

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

    <?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.ZWM.javaweb.servlet.StudentServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>studentServlet</servlet-name>
            <url-pattern>/servlet/student</url-pattern>
        </servlet-mapping>
    
    </web-app>
    
  • 第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet。

    • student.html

    • 这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面。

    • student.html文件的内容

    • <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Student Page</title>
      </head>
      <body>
        <a href="/xmm01/servlet/student">Student List</a>
      </body>
      </html>
      
  • 第十步:让IDEA工具去关联Tomcat服务器。关联的过程当中将webapp部署到Tomcat服务器当中。

    • IDEA工具右上角,绿色小锤子右边有一个:Add Configuration
    • 左上角加号,点击Tomcat Server --> local
    • 在弹出的界面中设置服务器Server的参数(基本上不用动)
    • 在当前窗口中有一个Deployment(点击这个用来部署webapp),继续点击加号,部署即可。
    • 修改 Application context为:/xmm01
  • 第十一步:启动Tomcat服务器

    • 在右上角有绿色的箭头,或者绿色的小虫子,点击这个绿色的小虫子,可以采用debug的模式启动Tomcat服务器。
    • 我们开发中建议适用debug模式启动Tomcat
  • 第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/xmm01/student.html

    结果:

    |
    |
    |
    |




文理双修:

7.《清平乐·村居》宋朝·辛弃疾
茅檐低小,溪上青青草。醉里吴音相媚好,白发谁家翁媪?

大儿锄豆溪东,中儿正织鸡笼。最喜小儿亡(音同"无")赖,溪头卧剥莲蓬。

译文:

草屋的茅檐又低又小,溪边长满了碧绿的小草。含有醉意的吴地方言,听起来温柔又美好,那满头白发的老人是谁家的呀?

大儿子在溪东边的豆田锄草,二儿子正忙于编织鸡笼。最令人喜爱的是小儿子,他正横卧在溪头草丛,剥着刚摘下的莲蓬。

posted @ 2023-04-29 04:08  猪无名  阅读(142)  评论(0编辑  收藏  举报