Javaweb-初识(Tomcat服务部署创建Javaweb项目Servlet Post请求案例)

Posted Ocean:)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javaweb-初识(Tomcat服务部署创建Javaweb项目Servlet Post请求案例)相关的知识,希望对你有一定的参考价值。

Tomcat

Tomcat服务器概述

Apache组织,Sun公司以及个人开发者一起维护的符合一部分JavaEE开发规范的开源轻量级服务器软件,对于用户使用比较友好,完全兼容JSP和Servlet,同时可以响应html页面

JBoss、WebLogic完全符合JavaEE规范的服务器,但是是收费的

web 服务器软件是提供 web 服务的工具

安装

官网地址:http://tomcat.apache.org/

选择合适的版本下载zip包即可

  • 不推荐直接下载windows安装程序
  • 安装路径不能存在中文和特殊字符

将下载的文件解压到安装目录

tomcat目录结构

bin
	二进制目录,对应tomcat服务器的可执行文件,对应.sh .bat文件
	.sh Linux系统中的shell脚本,.bat是Windows系统中使用的比处理文件
	启动Tomcat使用startup.bat,关闭使用shutdown.bat
	
conf
	配置文件目录
	server.xml
		配置整个服务器信息,可以用于修改端口号、添加虚拟主机
	web.xml
		存储当前Tomcat服务器支持的数据类型、文档类型、MIME类型
	tomcatusers.xml
    	Tomcat用户,在tomcat管理页面中,Manager tomcat登陆需要用户名和密码

lib
	Tomcat服务所需的库文件,都是jar包形式
	servlet-api.jar Servlet支持的核心Jar
	
logs
	日志文件目录,tomcat运行过程中的错误,记录当前到log日志中
	
tmep
	临时文件目录,tomcat关闭后自动删除
	
webapps
	存放web项目路径
	
work
	web项目运行过程中的一些资源的保存目录,jsp文件运行过程中需要同故宫tomcat解析,解析完成后生成一个对应的servlet程序,保存到wordk目录中
	
LICENSE
	许可证
	
NOTICE
	说明文件

启动tomcat方式:找到bin目录下的start.bat,双击启动

如果启动失败按以下操作检查

  1. 检查JDK环境变量

    JAVA_HOME CLASS_PATH Path

  2. 检查是否在环境变量中存在一个Catelina目录,删除

  3. 检查路径是否有中文

  4. 检查是否已经打开了tomcat(提示8080被占用)

  5. 如果都检查完毕还是不能启动重启下电脑

服务启动后访问:http://127.0.0.1:8080/,出现此页面,代表启动成功

idea配置tomcat

第一种方法:idea中新建项目时配置

第二种方法:直接配置

再打开的页面点击左上角加号选择tomcat

configure配置文件目录即可

创建Javaweb项目

idea创建项目

不同的idea版本稍有差异

在WEB-INF目录下新建两个文件夹 classes、lib

快捷方法:

WEB-INF文件夹上右击,选择open in,选择底部terminal输入命令

mkdir classes lib

接下来去修改项目依赖

选择右上角file-project sturcture,按如图所示进行设置

勾选Use module compile output path

将Output path和Test output path都改为之前创建的classes目录

Dependencies面板,点击加号,选择 JARs or directiories,选择创建的lib目录

配置打包方式Artifacts:点击 Artifacts选项卡,IDEA会为该项目自动创建一个名为“JavaWeb:war exploded”的打包方式,表示 打包成war包,并且是文件展开性的,输出路径为当前项目下的 out 文件夹,保持默认即可。另外勾选下“Build on make”,表示编译的时候就打包部署,勾选“Show content of elements”,表示显示详细的内容列表

配置tomcat

目录结构

idea创建的Javaweb项目目录结构

├─.idea
│  └─artifacts
├─src
└─web
    └─WEB-INF
        ├─classes
        └─lib
        └─web.xml

	
src路径
	Java源代码,servlet,dao,service
web路径
	web项目路径
	context内容静态资源(HTML、js、css、img、video)
	WEB-INF:该路径中的内容不允许通过url访问,收到tomcat限制(一般通过web.xml文件限制或者注解限制)
   	
   	classes目录:Java源代码对应的.class字节码文件,可以在tomcat服务器运行
   	lib目录:当前web项目运行所需要的jar包,第三方库,需要交给tomcat服务器
   	
   	web.xml当前web项目的配置文件,支持所有的servlet版本
   		配置servlet、filter、listener,web项目初始化文件

Servlet

在 Javaweb 中 HTTP 协议对应的一个类 HttpServlet – 符合 HTTP 协议的一个 Server applet 程序要求,也是重要组件之一

在JavaEE平台上,处理TCP连接,解析HTTP协议这些底层工作统统扔给现成的Web服务器去做,我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的,JavaEE提供了Servlet API,我们使用Servlet API编写自己的Servlet来处理HTTP请求,Web服务器实现Servlet API接口,实现底层功能:

post请求案例

接收到请求,返回一段文字

在src目录下新建文件夹,里边放java代码,也就是后端逻辑,接收到请求,返回一段文字

package cn.ocean888.demo1;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/TestPost")
// WebServlet注解表示这是一个Servlet,并映射到地址/:
public class TestPost extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置响应类型,可选设置
        resp.setContentType("text/html");
        // 获取输出流,写入响应
        resp.getWriter().append("welcome to servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

testpost.html,一个简单的表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEST</title>
</head>
<body>
<form action="TestPost" method="post">
    <span>name:</span><input type="text">
    <input type="submit" value="提交">
</form>
</body>
</html>

写好代码之后,在idea右上角的三角,运行tomcat服务器,启动成功访问url

http://localhost:8080/JavaRCE_war_exploded/testpost.html
这个url在tomcat配置里可以看到

效果如下

一个Servlet总是继承自HttpServlet,然后覆写doGet()doPost()方法。注意到doGet()方法传入了HttpServletRequestHttpServletResponse两个对象,分别代表HTTP请求和响应。我们使用Servlet API时,并不直接与底层TCP交互,也不需要解析HTTP协议,因为HttpServletRequestHttpServletResponse就已经封装好了请求和响应。以发送响应为例,我们只需要设置正确的响应类型,然后获取PrintWriter,写入响应即可

问题解决

如果导入HttpServlet无法导入,原因:IntelliJ IDEA 没有导入 servlet-api.jar 这个架包,需要你手动导入支持,按以下步骤操作

idea->file目录->project structure

找到 Tomcat 安装路径 下的 lib 文件夹中的 Servlet.api 这个文件,添加这个文件

HTTP协议和HTTPServlet关系

HTTPServlet 是 Java 中符合 HTTP 协议的 Servlet 程序基类,其中

  • HTTPServletRequest 对应 HTTP 的请求行
  • HTTPServletResponse 对应 HTTP 的响应行


以上是关于Javaweb-初识(Tomcat服务部署创建Javaweb项目Servlet Post请求案例)的主要内容,如果未能解决你的问题,请参考以下文章

实战,idea创建web项目及tomcat部署

云服务器部署javaweb项目tomcat启动后页面无法正常跳转

IDEA打包JavaWeb的War包并部署到Tomcat

IDEA打包JavaWeb的War包并部署到Tomcat

Java使用IntelliJ IDEA创建JavaWeb应用程序并配置Tomcat

一键解决从Myeclipse工程打包JavaWeb项目到服务器的Tomcat,并自动部署