使用IDEA集成开发工具开发Servlet
? - 第一步:New Project(我比较习惯先创建一个Empty Project【空工程】,然后在空工程下新建Module【模块】,这不是必须的,只是一种习惯,你可以直接新建非空的Project),这个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方法中编写业务代码(我们这里连接数据库了。)
? - 第七步:在WEB-INF目录下新建了一个子目录:lib(这个目录名可不能随意,必须是全部小写的lib),并且将连接数据库的驱动jar包放到lib目录下。
? - 第八步:在web.xml文件中完成StudentServlet类的注册。(请求路径和Servlet之间对应起来)
? ```java
? <?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.bjpowernode.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文件的内容
? ? - ```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>