JavaWeb通过IDEA配置Servlet操作流程详解
作者:知奕奕 发布时间:2023-10-09 09:26:23
创建项目
首先创建一个空项目!!!注意是空项目!!!
点击 文件->新建->新模块 ,新建一个名称为 servlet02 的模块(注意该模块的生成位置应该在我们刚刚新建的空项目下面!!!)
之后右键点击新模块 servlet02,选择 “添加框架支持”
勾选 “web 应用程序” ,之后直接点击完成即可自动生成 webapp 框架;
引入外部 jar
文件 -> 项目结构
模块 -> servlet02 -> 依赖 -> 点击加号,并选择第一个项目
找到 tomcat 根目录下的 lib 文件夹,选择 jsp-api.jar
和 servlet-api.jar
两个包并导入!
安装 mysql-connector
前往 maven 中心仓库,搜索 mysql-connector;
或者直接前往此地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
因为我使用的是 mysql5.7 版本,所以我们找到仓库内的 5.1.x 中最新的那一个版本,下载其 jar 包就好了(5.1.x 版本兼容 5.7)
下载完毕后直接把该 jar 包,粘贴到 tomcat 根目录下的 lib 文件夹里面!
编写 servlet 文件
下面就是标准的 JDBC 操作了,请您直接看注释,一个个解释太累了
package com.zhiyiyi.javaweb.servlet;
import jakarta.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
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 {
// 设置请求头类型
response.setContentType("text/html");
// 设置输出
PrintWriter printWriter = response.getWriter();
// 为三件套分配内存空间
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 反射获取jdbc驱动
Class.forName("com.mysql.jdbc.Driver");
// 传入你的mysql数据库名称、用户名、密码
String url = "jdbc:mysql://localhost:3306/jakarta";
String user = "root";
String password = "123456";
// 链接数据库
conn = DriverManager.getConnection(url, user, password);
// 编写查询语句并执行,使用resultset取回查询结果
String sql = "select no, name from std1";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
// 打印从数据库中取回的结果
while (rs.next()) {
String no = rs.getString("no");
String name = rs.getString("name");
printWriter.println(no + " " + name + "<br>");
}
// 一些错误处理
} catch (ClassNotFoundException | SQLException e) {
throw new RuntimeException(e);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
编写 student.html 文件
我们生成的 webapp 模板默认是自带一个 index.jsp 的,目前用不到,先删掉;
在同样的位置新建一个 student.html 文件,输入以下代码;
这里使用了一个链接指向了我们刚刚编写的 servlet;
<html>
<head>
<meta charset="UTF-8" />
<title>student servlet</title>
</head>
<body>
<a href="/crm/servlet/student" rel="external nofollow" >student list</a>
</body>
</html>
配置 tomcat 服务器
点击 idea 右上角绿色小三角左边的下拉列表,选择“添加配置”
弹出窗口点击加号 -> tomcat 服务器 -> 本地
然后按照下图所示填充内容
注意:由于我的电脑端口被占用,所以我修改了 http 端口为 10086,事实上这一项我们保持默认不用管就可以了!
再次进入“部署”栏目,点击加号添加工件,然后设置应用程序上下文为/crm 即可;
这里的 /crm
对应我们之前的 student.html
链接里的/crm
/crm 表示项目的目录
运行并查看服务器
一切配置完毕,点击绿色按钮开始构建 tomcat 服务器;
此时因为我们勾选了服务器一启动就打开浏览器的选项,但我们发现刚刚打开的浏览器 404 报错;
别着急,只是路径对不上,我们将 url 改为我们设置的 herf 路径即可访问到 mysql 提取的数据了!!!
来源:https://blog.csdn.net/delete_you/article/details/127163670


猜你喜欢
- 上一篇:Android 10 App启动分析之进程创建篇(一)上一篇文章,我们探讨了App启动过程中进程创建及初始化的流程,这篇文章我们接着
- 将方形的图像映射到正方形上似乎并没有什么难度,所以接下来要做的是把图像映射到球面上。而球的参数方程为x=rcosϕcos&theta
- 来源:https://www.cnblogs.com/dato/p/7027949.html
- 栈栈(stack)又名堆栈,它是一种运算受限的线性表 。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
- 前言相信做地图社交类APP开发的大家都知道,一般情况下,为了整体的美观和用户体验度,我们需要定制化Marker的样式。本文中实现的方式都是基
- 1.使用List集合方式用list保存activity实例,然后逐一干掉import java.util.LinkedList;import
- 1. 导入依赖包// retrofit, 基于Okhttp,考虑到项目中经常会用到retrofit,就导入这个了。 compil
- 在客户端中,为了防止界面假死状态,或者不能拖动界面,可以使用BackgroundWorker。1.在界面上拖动一个BackgroundWor
- C#异常处理总结及简单实例一、异常处理的理解?异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。因此处理这种错误,
- 简介optional类是java8中引入的针对NPE问题的一种优美处理方式,源码作者也希望以此替代null。历史1965年,英国一位名为To
- 一.背景在复习《C++基础与提高》时,自己实现运算符重载(i++)时,几次都报错。其实还是自己对运算符重载这一部分内容理解得不够透彻,于是再
- 在web页面上我们可以通过frameset,iframe嵌套框架很容易实现各种导航+内容的布局界面,而在winform、WPF中实现其实也很
- 由于是多态对象,基类类型的变量可以保存派生类型。 要访问派生类型的实例成员,必须将值强制转换 * 生类型。 但是,强制转换会引发 Invali
- 1. 前言Spring的核心技术IOC(Intorol of Converse控制反转)的实现途径是DI(dependency Insert
- 提示:建议一定要看后面的@RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基本知识常识,可选择性跳过。声明:
- 什么是代理模式代理模式是开发中常见的一种设计模式,使用代理模式可以很好的对程序进行横向扩展。代理,顾名思义就是一个真实对象会存在一个代理对象
- 本文实例为大家分享了java统计文件中字符个数的具体代码,供大家参考,具体内容如下package com.zhu.io;import jav
- Web控件DropDownList和WinForm控件ComboBox机制不一样。ComboBox没有对应的ListItem需要自己写一个:
- 本文实例讲述了C#实现IP摄像头的方法。分享给大家供大家参考。具体实现方法如下:#region IP摄像头代码/// <summary
- Android应用中能很方便的完成这些功能,很多的应用中都有“分享”功能?如何分享呢?下面给大家说说看。最近有人问到Android分享功能用