当前位置: 首页 > news >正文

web一些实验代码——Servlet请求与响应

实验4:Servlet请求与响应

1、在页面输入学生学号,从数据库中查询学生信息并显示。

(1)启动MySQL数据库服务,新建数据库,将student.sql文件导入到新建数据库(建立表,并插入3条数据)

(2)新建html页面:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/weeebbbb_war_exploded/LoginServlet" method="post">用户名:<input type="text" name="username"></br>密码:<input type="password" name="password"></br><input type="submit" value="提交">
</form>
</body>
</html>

(3)新建DbUtil类:

package com.example.weeebbbb;import java.sql.*;public class DbUtil {public static String DRIVER ="com.mysql.jdbc.Driver";//数据库public static final String URL ="jdbc:mysql://localhost:3306/student?useSSL=false";public static final String DBUser = "root";public static final String DBPassword = "123456";public static Connection conn = null;public static Connection getConn(String dbDri,String dbUrl,String username,String pass) {try {Class.forName(DRIVER);conn = DriverManager.getConnection(URL, DBUser, DBPassword);} catch (Exception e) {e.printStackTrace();}return conn;}
}

(4)在web.xml文件中配置数据库连接信息:

    <context-param><param-name>dbUrl</param-name><param-value>jdbc:mysql://localhost:3306/student</param-value></context-param><context-param><param-name>duUsername</param-name><param-value>root</param-value></context-param><context-param><param-name>dbPassword</param-name><param-value>root</param-value></context-param><context-param><param-name>jdbcDriver</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param>

(5)在pom.xml文件中添加MySQL驱动依赖(需要联网,一定要考虑自己数据库的版本,注意驱动版本和web.xml文件中的jdbcDriver驱动字符串的写法),则项目可不用导入MySQL驱动jar包,

 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version>
</dependency>

(6)新建Servlet,完成获取网页表单提交的学号信息,并从数据库中查询此学号学生的信息,并响应输出:

package com.example.weeebbbb;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;@WebServlet(name ="wek4_queryServlet",value = "/wek4_queryServlet")
public class wek4_queryServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("1111");resp.setContentType("text/html;charset=utf-8");String stuNum=req.getParameter("stuNum");ServletContext context=this.getServletContext();String dbUrl=context.getInitParameter("dbUrl");String dbUsername=context.getInitParameter("dbUsername");String dbPassword=context.getInitParameter("dbPassword");String jdbcDriver=context.getInitParameter("jdbcDriver");Connection connection=DbUtil.getConn(dbUrl,dbUsername,dbPassword,jdbcDriver);String sql="select * from student where stuNum=?";PreparedStatement pst=null;try{pst= connection.prepareStatement(sql);pst.setString(1,stuNum);ResultSet rs=pst.executeQuery();String str="";System.out.println("11111");if(rs.next()){System.out.println("22222");str="这位同学的学号是"+rs.getString("stuNum")+",姓名是:"+rs.getString("stuName");}else{str="查无此人";}resp.getWriter().println(str);}catch (SQLException e){e.printStackTrace();}}
}

(7)新建输入信息页面:

<%--Created by IntelliJ IDEA.User: cicDate: 2023/11/8Time: 14:19To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="wek4_queryServlet" method="get">请输入学号:<input type="text" size="20" name="stuNum"><input type="submit" value="查询">
</form></body>
</html>

查询已有数据:

查询成功:

查询不存在的数据:

查询失败:

http://www.lryc.cn/news/269753.html

相关文章:

  • GPT系列概述
  • 基于遗传算法的集装箱吊装优化,基于遗传算法的集装箱装卸优化
  • postgreSQL单机部署
  • 思维逻辑题3
  • 强大的音乐乐谱控件库
  • 数据库——简单查询复杂查询
  • java虚拟机内存管理
  • Hive实战:词频统计
  • FairyGUI-Cocos Creator官方Demo源码解读
  • LabVIEW利用视觉引导机开发器人精准抓取
  • 【Linux】指令(本人使用比较少的)——笔记(持续更新)
  • 032 - STM32学习笔记 - TIM基本定时器(一) - 定时器基本知识
  • 轮廓检测与处理
  • 跟着LearnOpenGL学习11--材质
  • Java guava partition方法拆分集合自定义集合拆分方法
  • GLTF编辑器-位移贴图实现破碎的路面
  • 多维时序 | MATLAB实现SSA-BiLSTM麻雀算法优化双向长短期记忆神经网络多变量时间序列预测
  • docker安装Nacos和Rabbitmq
  • Android MVC 写法
  • 网络层解读
  • js for和forEach 跳出循环 替代方案
  • 如何使用ArcGIS Pro自动矢量化建筑
  • 交互式笔记Jupyter Notebook本地部署并实现公网远程访问内网服务器
  • 41.坑王驾到第七期:uniapp开发微信小程序引用组件时报错!
  • 挂载与解挂载
  • UGUI Panel的显示和隐藏优化
  • Linux:多文件编辑
  • 模式识别与机器学习-概率图模型
  • RK3566 ANDROID 11 平台上适配移远EC200A
  • 存算分离降本增效,StarRocks 助力聚水潭 SaaS 业务服务化升级