GDPU JavaWeb Ajax请求

异步请求可以提升用户体验并优化页面性能。

ajax登录

实现ajax异步登录。

注意,ajax用到了jQuery库,先下载好相应的js库,然后复制导入到工程的web目录下,最好与你的前端页面同一层级。然后编写时路径一定要找准,“pageContext.request.contextPath” 指的是应用根目录,如果不会找,可以看这里。再找不到,也可以试一下写静态资源地址。然后url也要写对,否则响应不了。如果浏览器没响应,可以点F12看控制台报错的信息。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Ajax</title>
    <script type="text/javascript"
            src="${pageContext.request.contextPath}/jquery-3.7.1.js"></script>
<%--    <script type="text/javascript"--%>
<%--    src="https://code.jquery.com/jquery-3.7.1.js"></script>--%>
    <script type="text/javascript">
        $(document).ready(function(){
            $("button").click(function(){
                $.ajax({
                    type:"post",            //提交方式
                    url:'http://localhost:8080/sysql_war_exploded/AJAXServlet',
                    data:{
                        userName:  $("#userName").val(),
                        password:  $("#password").val()
                    },                       //data中的内容会自动的添加到url后面
                    dataType: "text",         //返回数据的格式
                    success:function(a){       //请求成功后执行的函数
                        if(a=="true"){
                            $('#suss').html("登录成功!")
                        }else{
                            $('#suss').html("登录失败!")
                        }
                    },
                    error :function () {       //请求失败后执行的函数
                        alert("请求失败");
                    },
                });
            });
        });
    </script>
</head>
<body>
<div>
    <div>
        <ul>
            <li>用户名:</li>
            <li><input id="userName" name="userName" type="text" /></li>
        </ul>
    </div>
    <div>
        <ul>
            <li>密码:</li>
            <li><input id="password" name="password" type="password"/></li>
        </ul>
    </div>
    <div>
        <ul>
            <li><button>登录</button></li>
        </ul>
    </div>
    <div id="suss"></div>
</div>
</body>
</html>
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.io.PrintWriter;
import java.util.Map;

@WebServlet(name = "AJAXServlet", urlPatterns = "/AJAXServlet")
public class AJAXServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse
            response) throws ServletException, IOException {
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        boolean flag = false;
        Map<String, String[]> parameterMap = request.getParameterMap();
        if ((request.getParameter("userName")).equals("itcast")
                && request.getParameter("password").equals("123")) {
            flag = true;            //登录成功标志
        } else {
            flag = false;
        }
        response.setContentType("text/html;charset=utf-8");
        //使用PrintWriter方法打印登录结果
        PrintWriter out = response.getWriter();
        out.print(flag);
        out.flush();
        out.close();
    }
}

 ajax公告显示

要求应用ajax实现无刷新、每隔10分钟从数据库获取一次最新公告,并滚动显示。

注意,以下代码并不是mvc模式。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
    <script type="text/javascript"
            src="${pageContext.request.contextPath}/jquery-3.7.1.js"></script>
    <script language="JavaScript">
        function getInfo() {
            $.get("http://localhost:8080/sysql_war_exploded/getInfo.jsp?nocache="+new  Date().getTime(),function (data) {
                $("#showInfo").html(data);
            });
        }
        $(document).ready(function () {
            getInfo();//调用getInfo()方法获取公告信息
            window.setInterval("getInfo()",600000);
        })
    </script>
</head>
<body>
<section>
    <marquee id="showInfo" direction="up" scrollamount="3">
    </marquee>
</section>
</body>
</html>
<%@ page language="java" contentType="text/html;charset=UTF-8"
         pageEncoding="UTF-8" %>
<%@page import="java.sql.*" %>
<jsp:useBean id="conn" class="Dao.ConnDB"
             scope="page"></jsp:useBean>
<ul>
    <%
        ResultSet rs=conn.executeQuery("select title from info order by id desc");
        if(rs.next()){
            do{
                out.print("<li>"+rs.getString(1)+"</li>");
            }while (rs.next());
        }else{
            out.print("<li>暂无公告信息!</li>");
        }
    %>
</ul>
package Dao;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class ConnDB {
    public Connection conn =null;    //声明Connection对象的实例
    public Statement stmt = null;    //声明Statement对象的实例
    public ResultSet rs = null;      //声明ResultSet对象的示例
    //指定资源文件保存的位置
    private static String propFileName= "connDB.properties";
    //创建并实例化Properties对象的实例
    private static Properties prop=new Properties();
    //定义并保存数据库驱动的变量
    private static String dbClassName ="";
    private static String dbUrl="";
    private static String user="";
    private static String pass="";
    /**
     * 构造方法
     */
    static{
        try{
            //将Properties文件读取到InputStream对象中
            InputStream in=ConnDB.class.getResourceAsStream(propFileName);
            prop.load(in);
            dbClassName = prop.getProperty("DB_CLASS_NAME"); //获取数据库驱动
            dbUrl = prop.getProperty("DB_URL");  //获取数据库驱动
            user = prop.getProperty("user");  //获取数据库账号
            pass = prop.getProperty("pass");  //获取数据库密码
        }catch (Exception e){
            e.printStackTrace();                             //输出异常信息
        }
    }
    /**
     * 连接数据库
     */
    public  Connection getConection(){
        try{
            Class.forName(dbClassName).newInstance(); //装载数据库驱动
            //建立与数据库URL中定义的数据库的连接
            conn = DriverManager.getConnection(dbUrl,user,pass);
        }catch (Exception ee){
            ee.printStackTrace();
        }
        if(conn==null){
            System.err.print("连接失败");
        }
        return conn;
    }
    /**
     * 执行查询
     */
    public ResultSet executeQuery(String sql){
        try{
            conn=getConection();
            stmt =conn.createStatement
                    (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            //执行SQL语句,并返回一个ResultSet对象rs
            rs =stmt.executeQuery(sql);
        }catch (SQLException ex){
            System.err.print(ex.getErrorCode());
        }
        return rs;
    }
    /**
     * 关闭数据库的连接
     */
    public void close(){
        try{
            if(rs!=null){
                rs.close();
            }
            if (stmt!=null){
                stmt.close();
            }
            if (conn!=null){
                conn.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
DB_CLASS_NAME =com.mysql.cj.jdbc.Driver
DB_URL=jdbc:mysql://127.0.0.1:3306/dbjsp?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
user =root
pass =123456

 

 

⛽ 还有个网站设计的自立更新了喔,摸完这个shui课了,fighting(~ ̄▽ ̄)~

实验心得 

划了个不平淡的蛋。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690682.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】

STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯&#xff08;HAL库方式&#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上&#xff0c;构建两个任务&#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…

Android基本概念

Android发展历史 Android 是一个流行的移动操作系统&#xff0c;由 Google 开发并于 2008 年首次推出。 Android是基于Linux开发的移动设备操作系统。 在2005年被Google收购&#xff0c;2008年发布Android1.0&#xff0c;后续发布1.5/1.6 ------ 直到2021年发布Andriod12 。 …

什么是大型语言模型 ?

引言 在本文[1]中&#xff0c;我们将从高层次概述大型语言模型 (LLM) 的具体含义。 背景 2023年11月&#xff0c;我偶然间听闻了OpenAI的开发者大会&#xff0c;这个大会展示了人工智能领域的革命性进展&#xff0c;让我深深着迷。怀着对这一领域的浓厚兴趣&#xff0c;我加入了…

【Python】解决Python报错:ZeroDivisionError: division by zero

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 直接除零2.2 变量导致的间接除零 3. 解决方案3.1 检查除数3.2 使用异常处理 4. 预防措施4.1 数据验证4.2 编写防御性代码 结语 引言 在Python中&#xff0c;尝试将一个数字除以零时&#xff0c;会抛出ZeroDivisionErr…

重邮计算机网络803-(1)概述

目录 二.互联网概述 1.网络的网络 2.计算机网络的概念 3. 互联网发展的三个阶段 4.制订互联网的正式标准要经过以下的四个阶段 5.互联网的组成&#xff08;功能&#xff09; 6.互联网功能 7.互联网的组成&#xff08;物理&#xff09; 8. 互联网的边缘部分 9.两种通信…

串口屏在焊接机上的应用

在现代工业自动化浪潮中&#xff0c;焊接技术作为制造业的脊梁&#xff0c;其精准与效率直接关系到产品的质量和生产线的流畅性。而在这场技术的革新中&#xff0c;串口屏以其独特的优势&#xff0c;正成为焊接机领域的璀璨明星。今天&#xff0c;就让我们一同探索串口屏如何助…

手猫助手Agent技术探索总结

随着LLM的发展&#xff0c;ChatGPT能力不断增强&#xff0c;AI不断有新的概念提出&#xff0c;一种衍生类型的应用AI Agent也借着这股春风开启了一波话题热度&#xff0c;各种初创公司&#xff0c;包括Open AI内部也都在密切关注着AI Agent领域的变化。阿里集团内的AI团队也有很…

了解JVM中的Server和Client参数

了解JVM中的Server和Client参数 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;作为Java程序运行的核心&#xff0c;提供了多种参数来优化和调整程序的性能和行为。其中&#xff0c;-server和-client是两个重要的参数&#xff0c;分别用于配置JVM在服…

SMS - 基于阿里云实现手机短信验证码登录(无需备案,非测试)

目录 SMS 环境调试 从阿里云云市场中购买第三方短信服务 调试短信验证码功能 实战开发 封装组件 对外接口 调用演示 SMS 环境调试 从阿里云云市场中购买第三方短信服务 a&#xff09;进入阿里云首页&#xff0c;然后从云市场中找到 “短信” &#xff08;一定要从 云…

BUG解决: Zotero 文献GBT7714无法正常调用

1. 下载csl文件 网上有推荐直接下载现成版本的&#xff0c;比如参考资料【1】的蓝奏云文件&#xff0c;但是还是无法实现功能&#xff08;空文档中可以用了&#xff09;。 2. Github版本 也有说网盘版本和那个 Juris-M 的 CSL bug 太多的。 总结 后面发现&#xff0c;只需…

【原创】springboot+mysql农业园区管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Go语言学习记录

GO语法学习之路 学习时间段2024-06-02学习记录安装&环境配置Go安装包内容统一入门姿势&#xff1a;hello world实现 Go语法初学Go 运行时&#xff08;runtime&#xff09;Go解释器 2024-06-03学习记录交叉编译要去linux下执行要去Mac下执行要去win下执行 参数声明常量 2024…

大语言模型的sft

https://zhuanlan.zhihu.com/p/692892489https://zhuanlan.zhihu.com/p/6928924891.常见的sft的开发流程 a.根据业务场景调整提示词;越详细越好,不要让模型理解歧义,拆分。 b.尝试闭源和开源,以评估LLM能够解决这类场景问题。 c.准备数据,包括多个子任务。 d.训练上线…

Inpaint9.1软件下载附加详细安装教程

软件简介: Inpaint 是个人开发者Max开发的图片处理软件&#xff0c;可以高效去除水印&#xff0c;修复照片等。使用方法和操作都很简单&#xff0c;非常适合不会PS等软件的小白用户。 安 装 包 获 取 地 址&#xff1a; Iinpaint win版&#xff1a;​​https://souurl.cn/b…

Java Web学习笔记22——前端工程化

实际的前端开发&#xff1a; 前端工程化&#xff1a;是指在企业级的前端项目开发中&#xff0c;把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。 环境准备&#xff1a; vue-cli&#xff1a; 介绍&#xff1a;vue-cli是Vue官方提供的一个脚手架&#xff0c;用于…

项目管理--领导者vs管理者

项目管理领导者和管理者&#xff0c;虽然这两个角色在项目管理中都非常重要&#xff0c;但它们之间还是存在一些区别。首先&#xff0c;让我们来了解一下这两个角色的定义和职责。项目管理领导者是指那些能够激励团队成员&#xff0c;带领他们朝着共同目标前进的人。他们具备良…

Vue基础知识:插槽——默认插槽,插槽的后备内容,具名插槽,作用域插槽的认识与使用。(slot,#default,row的认识)

1.插槽的基本认识&#xff1a; 作用&#xff1a;让组件内部的一些结构支持自定义 插槽的分类&#xff1a; 1.默认插槽&#xff08;组件内只能定制一处结构&#xff09; 2.具名插槽&#xff08;组件内可以定制多次结构&#xff09; 简单而言&#xff1a;就是你希望封装一个…

YOLOv10开源,高效轻量实时端到端目标检测新标准,速度提升46%

前言 实时目标检测在自动驾驶、机器人导航、物体追踪等领域应用广泛&#xff0c;近年来&#xff0c;YOLO 系列模型凭借其高效的性能和实时性&#xff0c;成为了该领域的主流方法。但传统的 YOLO 模型通常采用非极大值抑制 (NMS) 进行后处理&#xff0c;这会增加推理延迟&#…

品牌策划:不只是工作,是一场创意与学习的旅程

你是否认为只有那些经验丰富、手握无数成功案例的高手才能在品牌策划界崭露头角&#xff1f; 今天&#xff0c;我要悄悄告诉你一个行业内的秘密&#xff1a;在品牌策划的世界里&#xff0c;经验虽重要&#xff0c;但绝非唯一。 1️、无止境的学习欲望 品牌策划&#xff0c;这…

【栈】1106. 解析布尔表达式

本文涉及知识点 栈 LeetCode 1106. 解析布尔表达式 布尔表达式 是计算结果不是 true 就是 false 的表达式。有效的表达式需遵循以下约定&#xff1a; ‘t’&#xff0c;运算结果为 true ‘f’&#xff0c;运算结果为 false ‘!(subExpr)’&#xff0c;运算过程为对内部表达式…