Java for the Web With Servlets, JSP, and EJB——PART1-First Servlet(Tomcat10.1.19)超原始手工编译并部署servlet程序

本文讲述了如何在Tomcat10.1.19中手动编译和部署JavaServlet,包括解决Java版本不匹配和依赖问题,以及如何使用IDEA简化开发过程,包括在pom.xml中添加依赖和构建过程。
摘要由CSDN通过智能技术生成

阅读《Java for the Web With Servlets, JSP, and EJB》ing,PART1(Tomcat10.1.19)

一、手动编译&部署

1.1编译java文件踩坑

书中TestingServlet代码↓

import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 
public class TestingServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, 
 HttpServletResponse response) 
 throws ServletException, IOException {
 PrintWriter out = response.getWriter(); 
 out.println("<HTML>"); 
 out.println("<HEAD>"); 
 out.println("<TITLE>Servlet Testing</TITLE>"); 
 out.println("</HEAD>"); 
 out.println("<BODY>"); 
 out.println("Welcome to the Servlet Testing Center"); 
 out.println("</BODY>"); 
 out.println("</HTML>"); 
 } 
}

tomcat-10.1.19中唯一一个s开头的jar包不是书中说的servlet.jar,而是servlet-api.jar。怀疑已经经过了更新换代。
在这里插入图片描述强行执行会报错程序包javax.servlet不存在

D:\softwares\tomcat\apache-tomcat-10.1.19\webapps\myApp\WEB-INF\classes>set classpath=D:\softwares\tomcat\apache-tomcat-10.1.19\lib\servlet-api.jar

D:\softwares\tomcat\apache-tomcat-10.1.19\webapps\myApp\WEB-INF\classes>javac -encoding utf8 -d . TestingServlet.java
TestingServlet.java:1: 错误: 程序包javax.servlet不存在
import javax.servlet.*;
^
TestingServlet.java:2: 错误: 程序包javax.servlet.http不存在
import javax.servlet.http.*;
^

javax被jakarta替换了,换成↓

import jakarta.servlet.*;
import jakarta.servlet.http.*;

执行后报错↓

D:\softwares\tomcat\apache-tomcat-10.1.19\webapps\myApp\WEB-INF\classes>javac -classpath D:\softwares\tomcat\apache-tomcat-10.1.19\lib\servlet-api.jar -d . TestingServlet.java
TestingServlet.java:5: 错误: 无法访问HttpServlet
public class TestingServlet extends HttpServlet {
                                    ^
  错误的类文件: D:\softwares\tomcat\apache-tomcat-10.1.19\lib\servlet-api.jar(jakarta/servlet/http/HttpServlet.class)
    类文件具有错误的版本 55.0, 应为 52.0
    请删除该文件或确保该文件位于正确的类路径子目录中。

参考1——jar包和当前java版本不对应
参考2——tomcat10.1.x需要java 11以上

哭泣TvT
下载一个jdk11,指定javac.exe(D:\softwares\java\jdk-11.0.20\bin\javac.exe),编译

D:\softwares\tomcat\apache-tomcat-10.1.19\webapps\myApp\WEB-INF\classes>D:\softwares\java\jdk-11.0.20\bin\javac.exe -classpath D:\softwares\tomcat\apache-tomcat-10.1.19\lib\servlet-api.jar -d . TestingServlet.java

OK,生成了.class文件
在这里插入图片描述

1.2 配置web.xml

从tomcat的默认webapp中复制web.xml到myApp/WEB-INF中
在这里插入图片描述
<web-app></web-app>标签里面的内容删掉并写入myApp的servlet的相关信息,注意添加servlet-mapping

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<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_6_0.xsd"
  version="6.0"
  metadata-complete="true">

	 <servlet> 
		<servlet-name>Testing</servlet-name> 
		<servlet-class>TestingServlet</servlet-class> 
	 </servlet> 
	 <servlet-mapping>
       <servlet-name>Testing</servlet-name>
       <url-pattern>/test</url-pattern>
     </servlet-mapping>

</web-app>

1.3 启动并访问

双击启动tomcat-10.1.19(注意要使用对应java版本——java11,配置环境变量JAVA_HOME)
在这里插入图片描述
访问:

http://localhost:8080/myApp/test

在这里插入图片描述

二、使用IDEA快速编译

每次都来这么一下实在是太麻烦了,搞点便捷的方式,以PrimitiveServlet为例。

  • 不要使用@Override
import jakarta.servlet.*;

import java.io.IOException;

public class PrimitiveServlet  implements Servlet {

    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }


    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        System.out.println("service");
    }


    public void destroy() {
        System.out.println("destroy");
    }


    public String getServletInfo() {
        return null;
    }


    public ServletConfig getServletConfig() {
        return null;
    }
}

2.1 pom.xml添加对应依赖

<dependency>
	<groupId>org.apache.tomcat</groupId>
	<artifactId>tomcat-servlet-api</artifactId>
	<version>10.1.17</version>
</dependency>

2.2 将java文件放在./src/main/java下,并build

  • 去掉↓这个第一行的package信息
package com.learning.demo;
  • build
    在这里插入图片描述

  • 得到.class文件,可以直接放在tomcat中WEB-INF/classes中
    在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值