通过IDEA
创建运行第一个Servlet
项目
IDEA
版本为2020.2
参考: https://jingyan.baidu.com/article/a65957f43dfb0324e67f9b0a.html
1. 创建第一个Servlet
项目
-
创建
java
项目 -
给项目起名
-
java
项目创建完成, 下图为目录结构 -
添加框架支持, 使项目成为
Java Web
项目 -
在
web/WEB-INF
下创建classes
和lib
目录lib
用来放项目所需JAR
包classes
用来作为项目的编译输出路径 -
接下来配置项目的编译输出路径
当然你也可以选择inherit project compile output path
, 即默认的项目输出路径
该路径可以在Project Structure/Project
中找到
-
配置完成后, 项目的目录结构如下
-
接下来添加
Servlet
所需的JAR
包从你的
Tomcat
安装目录下找到servlet-api-jar
并添加 -
接下来配置
Tomcat
到IDEA
-
手动将项目部署到
Tomcat
上至此, 项目创建成功.
接下来就编写一个简单的
Servlet
程序测试一下
以下代码写的比较菜, 大佬勿喷, 有错误欢迎指正
2.前端编写
使用
bootstrap3
写一个简单的四六级查询
<!DOCTYPE html>
<html>
<head>
<title>四六级查询</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/index.css" rel="stylesheet">
<link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css", rel="stylesheet">
</head>
<body>
<br><br><br>
<div class="bg-primary container text-center">
<h1>四六级查询</h1>
<hr>
<form action="CetServlet" class="form-inline">
考号:
<input type="text" class="form-control" name="studentId"> <!--name属性用于标识,从而使后端获取输入框的数据-->
<br><br>
姓名:
<input type="text" class="form-control" name="studentName"> <!--name属性用于标识,从而使后端获取输入框的数据-->
<br><br>
<input type="submit" class="btn btn-success">
</form>
</div>
</body>
</html>
-
目录结构
-
效果
3.编写Servlet
package com.shy.servlet;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
//Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
//Servlet 初始化后调用 init () 方法。
//Servlet 调用 service() 方法来处理客户端的请求。
//Servlet 销毁前调用 destroy() 方法。
//最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
public class CetServlet implements Servlet { // 实现Servlet接口
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
/**
* 用于获取Servlet配置相关的信息
*/
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 1.获取请求参数
String stuId = servletRequest.getParameter("studentId"); // 参数即<form>的name属性
String stuName = servletRequest.getParameter("StringName");
// 2. 用随机数模拟分数
int stuScore = Math.abs(new Random().nextInt(711));
/* 若生成的请求页面出现乱码,可添加以下设置:
但必须在获取PrintWriter对象之前获取
text/html是设置MIME类型,用于指定响应的内容以html格式显示
utf-8 防止中文乱码
*/
servletResponse.setContentType("text/html;charset=utf-8");
// 3.响应客户端的请求
// PrintWriter对象指定相应内容, 支持HTML
PrintWriter out = servletResponse.getWriter();
// 简单写一下格式
out.println("<h1>查询结果<h1><hr>");
out.println("<br>考号:" + stuId);
out.println("<br>姓名:" + stuName);
out.println("<br>成绩:" + stuScore);
}
/**
*
* 获取Servlet的相关信息
*/
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
-
目录结构:
4. 连接前后端
通过修改
web.xml
, 使Servlet
能够响应网页的请求
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--
web.xml是一个web程序的配置文件.
所有关于web程序的全局配置在该文件中配置
该文件描述了Tomcat应该如何部署你的程序
-->
<servlet>
<servlet-name>CetServlet</servlet-name> <!--指定该servlet程序的名称,可以随便起-->
<servlet-class>com.shy.servlet.CetServlet</servlet-class> <!--需指定servlet类的全路径-->
</servlet>
<servlet-mapping>
<servlet-name>CetServlet</servlet-name> <!--该name需与上面保持一致-->
<url-pattern>/html/CetServlet</url-pattern> <!--设置该Servlet类在浏览器上访问时的路径-->
</servlet-mapping>
</web-app>
5. Run Project
-
index.html
-
响应页面
芜湖~~