文章目录
Idea—Tomcat
- 前期准备
- 安装好Tomcat适用的JDK版本
- 在doc窗口中,测试Tomcat,保证可以正常执行。
第一步:New Project
(我比较习惯先创建一个Empty Project【空工程】,然后在空工程下新建Module【模块】,这不是必须的,只是一种习惯,你可以直接新建非空的Project),这个Empty Project起名为:javaweb(不是必须的,只是一个名字而已。一般情况下新建的Project的名字最好和目录的名字一致。)
第二步:新建模块(File --> new --> Module...)
- 这里新建的是一个普通的JavaSE模块
- 这个Module自动会被放在javaweb的project下面。
- 这个Module起名:servlet02
点击next,进入模块命名
之后点击完成。
-
第三步:让Module变成JavaEE的模块
(让Module变成webapp的模块。符合webapp规范。符合Servlet规范的Module)- 在Module上点击右键:Add Framework Support…(添加框架支持)
- 在弹出的窗口中,选择Web Application(选择的是webapp的支持)
- 选择了这个webapp的支持之后,IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。
- 重点,需要注意的:在IDEA工具中根据Web Application模板生成的目录中有一个web目录,这个目录就代表webapp的根
点击OK,此时点开模块servlet02,会发现有一个web文件夹。
-
这里对servlet的结构做一个解释
- JavaEE有13个不同的规范。web服务器JavaEE中的Servlet + JSP两个核心的规范。至于为什么需要实现sevlet规范,可以参考上一篇文章:模拟Servlet实现原理
- 上文产生的web文件夹,就是规范的体现。
- 一个合法的webapp目录结构:WEB-INF
|------WEB-INF
|------classes(存放字节码,程序员编写完程序,程序所生成的字节码文件存放处)
|------lib(第三方jar包,连接JDBC时,需要mysql连接java的jar,此处为jar包的存放处)
|------web.xml(注册Servlet,用户提供URL访问程序时,保证用户的URL和后端的java程序一一对应的映射关系存放此处)
|------html (网页代码)
|------css
|------javascript
|------image
第五步:导入Servlet的jar包
- 根据servlet原理,写的XXXservlet类需要实现servlet接口,此时如果没有导入servlet对应的jar包,发现Servlet.class文件没有找到。
- 解决方法:File --> Project Structrue --> Modules --> + 加号 --> Add JARS…——>CATALINA_HOME/lib/servlet-api.jar和jsp-api.jar添加到依赖中
点击Apply。
第六步:在Servlet当中的service方法中编写业务代码
- 在src的servletTest包下创建StudentServlet类继承 Servlet,代码在后面
- StudentServlet相当于web的小程序,用户需要访问该程序。
- 在src的servletTest包下创建StudentServlet类继承 Servlet,代码在后面
第七步:在web.xml文件中完成StudentServlet类的注册。(请求路径和Servlet之间对应起来)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<servlet>
<servlet-name>MyFirstServlet</servlet-name>
<!--这个位置必须是带有包名的全限定类名-->
<servlet-class>servletTest.StudentServlet</servlet-class>
</servlet>
<!--servlet映射信息-->
<servlet-mapping>
<!--这个也是随便的,不过这里写的内容要和上面的一样。-->
<servlet-name>MyFirstServlet</servlet-name>
<!--这里需要一个路径-->
<!--这个路径唯一的要求是必须以 / 开始-->
<!--当前这个路径可以随便写,是url的请求路径的一部分-->
<url-pattern>/servlet/student</url-pattern>
</servlet-mapping>
</web-app>
第八步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet。
-
student.html
-
这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面。——和上文符合规范的模板一样
-
注意web.xml中的
<url-pattern>/servlet/student</url-pattern>
和html中的<a href="/test/servlet/student">student page</a>
对应关系,html中多了一个根/test。第九步可以设置根,那里设置的根是什么,这里就写什么!
-
student.html文件的内容
-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student Page</title>
</head>
<body>
<!--这里的项目名是 /test ,无法动态获取,先写死-->
<a href="/test/servlet/student">student page</a>
</body>
</html>
第九步:让IDEA工具去关联Tomcat服务器。关联的过程当中将webapp部署到Tomcat服务器当中。
- IDEA工具右上角,绿色小锤子右边有一个:Add Configuration
- 左上角加号,点击Tomcat Server --> local
- 在弹出的界面中设置服务器Server的参数(基本上不用动)
- 在当前窗口中有一个Deployment(点击这个用来部署webapp),继续点击加号,部署即可。
- 修改 Application context为:/test ——此处是设置的根,可以设置为其他的,如果设置为其他的,那么html中的
<a href="/test/servlet/student">student page</a>
也需要改变。
第十步:启动Tomcat服务器
- 在右上角有绿色的箭头,或者绿色的小虫子,点击这个绿色的小虫子,可以采用debug的模式启动Tomcat服务器。
- 我们开发中建议适用debug模式启动Tomcat
- 第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/test/student.html
package servletTest;
import jakarta.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
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 {
//向控制台输出
System.out.println("My First Sevlet!");
/**
* 设置响应的内容类型:普通文本、html
* 这样才能支持在方法内输出html
* 且该设置需要在获取流之前设置
*/
response.setContentType("text/html");
/**
* 将信息输出到浏览器上
* 使用ServletResponse接口的response
* response :响应,从服务器向浏览器发送数据叫做响应
*/
PrintWriter out =response.getWriter();
out.println("My First Sevlet");
/**
* 浏览器能够识别HTML代码,那么能否在service方法中直接写html代码呢?
*/
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
链接JDBC
- 一个合法的webapp目录结构:WEB-INF
|------WEB-INF
|------classes(存放字节码,程序员编写完程序,程序所生成的字节码文件存放处)
|------lib(第三方jar包,连接JDBC时,需要mysql连接java的jar,此处为jar包的存放处)
|------web.xml(注册Servlet,用户提供URL访问程序时,保证用户的URL和后端的java程序一一对应的映射关系存放此处)
|------html (网页代码)
|------css
|------javascript
|------image
- 由此可见,只需要在WEB-INF文件夹下创建一个lib文件夹,并将JDBC的jar包导入就可以。