赞
踩
本文主要涉及如何使用tomcat部署前后端程序与前后端交互的几种方式,首先先是如何在tomcat中部署后端程序
首先要在idea中创建一个maven项目
右上角文件-新建-新建项目选择maven项目 这样就得到了一个pom.xml的项目
创建<dependencies>标签 并在其中引入对应jar包 代码如下文
- <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
该代码中包含了接下来所需要的http类所需要的父类
引入后pom.xml项目文件如下
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.example</groupId>
- <artifactId>untitled1</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.14.1</version>
- </dependency>
-
- </dependencies>
- <packaging>war</packaging>
- <build><finalName>hello_servlet1</finalName></build>
- </project>
在webapp文件夹下新建一个WEB-INF文件 在此文件夹下创建一个web.xml文件
引入该文件主要是告诉tomcat 该项目需要tomcat所带运行
在web.xml中写入如下代码
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app>
- <display-name> Archetype Created Web Appl ication </display-name>
- </web-app>
到现在为止都是固定套路
在java文件夹下创建java代码
- @WebServlet("/hello1")
- public class hellosevelet extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
- // super.doGet(req, resp);
- //属于resp对象 写入resp的body对象
- String student=req.getParameter("studentid");
- String classid=req.getParameter("classid");
- resp.getWriter().write("studentid="+student+"classid="+classid);
-
-
- }
- }
这里有几个注意点
1.需要继承httpservlet 此类在第一步所依赖的jar包中
2.将代码自带的super屏蔽,因为父类默认返回报错界面
3.req是客户端发来的请求 会自动解析 resp则是程序员自己设置的反馈信息
4.最后需要在代码前面加上@WebServlet("/你想设置的文件路径")
5.doget在前端发送get请求时调用 dopost则是发送post时调用
首先 tomcat运行后端代码需要war包 而打包默认jar包 因此需要在pom.xml中写入代码
<packaging>war</packaging>
将其变成war包
然后找到右侧maven程序找到packet 双击运行 这样就会出现一个默认项目名的jar包
将所得到的jar包放到tomcat中的webapp下 tomcat会自动生成目录 然后在bin文件夹下找到start.bat程序 启动tomcat
在网站中输入验证
http://127.0.0.1:8080/hello_servlet1/hello2
127.0.0.1代表本机ip 8080代表tomcat所绑定的本地端口 hello_servlet为jar包名也就是context path hello2则是自己写的文件路径
这样 我们就成功将后端代码部署到tomcat(注意 使用dopost方法会显示405方法错误 因为打开后端页面代码默认都是get)
当然还有插件例如smarttomcat 可以将打包项目和部署项目合并,大家可以下载安装尝试一下,能够提高效率
接下来 我们看如何部署前端代码
部署前端代码相比于后端较为简单既在webapp中创建html项目(tomcat中规定前端代码需要在此保存)
- String student=req.getParameter("studentid");
- String classid=req.getParameter("classid");
- resp.getWriter().write("studentid="+student+"classid="+classid);
接下来 我们默认后端代码需要接受student和classid两个值并将他们打印
第一种 也是最简单的 可以在网站中加入查询字符串进行传递信息
http://127.0.0.1:8080/hello_servlet1/hello1?studentid=100&classid=200
键值之间用=连接 文件层次和查询字符串直接用?分隔 不同的键值对用&分割
这样就能正确的把studentid和classid传给后端
首先引入包含ajax的jquery cdn
- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js">
-
- </script>
以及所需要的方法以及相对路径(这是对于html文件所在的路径来说)
- $.ajax({
- type:'get',
- url:'hello1',
-
-
-
-
- });
构建完成后即可完成前后端交互 实现数据传输
- <form action="hello1"method="Post">
- <input type="text" name="studentid">
- <input type="text"name="classid">
- <input type="submit"value="submit">
- </form>
action与method与ajax中的url和type相同 用户通过input进行输入 并用submit提交 后端就能得到name所对应的值
body-raw-json 发送json请求(send)json请求格式类似于
{
"studentid":10,
"classid":20
}一样
注意 此时后端收到json请求时 并不会自动解析出键值对 而是req通过读字节将json请求完整读出
想要解析出键值对 则要
1.引入依赖
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.14.1</version>
- </dependency>
2.在java代码中创建class包含所需要读取的键值对
- class student{
- public int studentid;
- public int classid;
- }
3.创建ObjectMapper objectMapper = new ObjectMapper();
4.通过objectmapper中的getvalueof 将req读入的json请求字节流转化为类中的对应属性 并返回一个新的类对象
student s=objectMapper.readValue(req.getInputStream(),student.class);
这样就能够得到所需的键值对 实际生产中 如果使用tomcat实现前后端交互 json请求用的比较多
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。