第一步:New Empty project,起名javaweb
第二步:New Module,起名:servlet01
第三步:让Module变成javaEE模块。(让Module变成webapp的模块。符合webapp规范。符合Servlet规范的Module)
在Module上点击右键:Add Framework Supprt…(添加框架支持)
在弹出的窗口中,选择Web Application(选择的是webapp的支持)
选择了这个webapp的支持之后,IDEA会自动生成一个符合Servlet规范的webapp目录结构
重点:重点注意的:在IDEA工具中根据Web Application模块生成的目录中有一个web目录,这个目录就代表webapp的根
第五步:编写Servlet (Firstservlet)
class Firstservlet implements Servlet
这个是时候发现Servlet.class文件没有。怎么办?将CATALINA_HOME/lib/servlet-api.jar 和 sp-api.jar添加到我们的classpath当中(这里的classpath说的是IDEA的classpath)
File --> Project Structrue–> Modules -->Dependencies–> +加号—> Add(添加) JARS…
实现jakarta.servlet.Servlet接口中5个方法。
第六步:在Servlet当中的service方法中编写业务代码(我们这里连接数据库了。)
第七步:在WEB-INF目录下新建一个子目录:lib(这个目录名不能随意,必须是全部小写的lib),并且将连接数据库的驱动jar包放到lib目录下。
第八步:在web.xml文件中完成FirstServlet类的注册。(请求路径和Servlet之间对应起来)
第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的FirstServlet类。
第十步:让IDEA工具去关联Tomcat服务器。关联过程当中将webapp部署到Tomcat服务器当中。
IDEA工具右上角,绿色小锤子右边有一个 :Add Configguration,
左上角加号,点击加号,然后找到Tomcat Server -> local并单击,
在弹出的界面中设置服务器Server的服务参数(基本上不用动),
在当前界面窗口中有一个Deployment(点击这个用来部署webapp),继续点击加号,部署即可,
修改Application context为:你想要的目录名称(注意:以‘/’开头)
第十一步:启动Tomcat服务器
在右上角有一个debug按钮,可以采用debug的模式启动服务器
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<a href="/xmm/suiyi/suiyi2">click me!a>
body>
html>
<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>suibianservlet-name>
<servlet-class>mypackage.FirstServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>suibianservlet-name>
<url-pattern>/suiyi/suiyi2url-pattern>
servlet-mapping>
web-app>
package mypackage;
import jakarta.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class FirstServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
servletResponse.setContentType("text/html");//设置响应的内容类型
PrintWriter out = servletResponse.getWriter();//打印输出流
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/123","","");
statement = connection.prepareStatement("select * from account");
resultSet = statement.executeQuery();
while(resultSet.next()){
String id = resultSet.getString("id");
int balance = resultSet.getInt("balance");
out.println("id="+id+" "+"balance="+balance);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}