三、JavaWeb从入门到熟练

news2024/11/25 12:58:17

一、JavaWeb概述

Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

二、Servlet

Servlet简介
Servlet是Java编写的一种server-side程序,它在web服务器上运行,并处理来自客户端(浏览器)的请求。Servlet能够处理多种不同类型的请求,如HTTP请求、HTTPS请求、FTP请求等。Servlet通常被用于动态生成网页内容,比如根据用户请求生成HTML网页。常用的Servlet容器包括Tomcat和Jetty等。在实际开发中,Servlet通常与JSP(Java Server Pages)共同使用,以构建动态Web应用程序。
1、导入pom依赖

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

2、创建一个HelloServlet类

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter printWriter=resp.getWriter();
        printWriter.print("hello servlet");
    }

}

3、添加web支持,并编写web.xml

<?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">
    
<!--    注册Servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.demo.servlet.HelloServlet</servlet-class>
    </servlet>
<!--   servlet请求路径 -->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

4、配置tomcat服务器,并且创建lib文件夹,导入库,不然会404
在这里插入图片描述

在这里插入图片描述
5、运行http://localhost:8080/hello测试

三、Jsp

Jsp简介
JSP(JavaServer Pages)是一种动态网页技术,它允许在HTML页面中嵌入Java代码,并在服务器端执行Java代码,生成动态内容返回给客户端。JSP技术可以帮助开发者更加高效地创建动态网页、Web应用程序和企业级应用程序。
导入pom依赖

  <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
    <!--    jstl表达式的依赖-->
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2</version>
    </dependency>

jsp语法

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>JavaWeb</title>
  </head>
  <body>
  <%
    String name="我是Jsp";
  %>
  <%=name%>

  <%=new Date()%>

  <%--jsp脚本片段--%>
  <%
    int sum = 0;
    for (int i = 1; i <=100 ; i++) {
      sum+=i;
    }
    out. println("<h1>sum="+sum+ "</h1>");
  %>
  </body>
</html>

四、JDBC

JDBC(Java Database Connectivity)是Java的一种标准API,用于与关系数据库进行交互。JDBC API提供了许多接口和类,用于执行SQL语句、处理结果集、管理与数据库的连接等。
使用JDBC API与数据库交互的步骤一般如下:

  1. 加载JDBC驱动程序
  2. 建立与数据库的连接
  3. 创建Statement或PreparedStatement对象
  4. 执行SQL语句
  5. 处理查询结果或更新操作的返回结果
  6. 关闭所有对数据库的连接,释放资源

导入pom依赖

 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
  </dependency>
import java.sql.*;

public class TestJDBC {
    public static void main(String[] args) {
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 加载数据库驱动程序
            Class.forName("com.mysql.jdbc.Driver");

            // 建立与数据库的连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");

            // 创建Statement对象
            stmt = con.createStatement();

            // 执行查询语句
            rs = stmt.executeQuery("SELECT * FROM lsz_user");

            // 处理查询结果
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String pwd = rs.getString("pwd");
                System.out.println(id + ", " + name + ", " + pwd);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭所有的连接和资源
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (con != null) con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python做聊天程序:打造智能交流

Python 做聊天程序&#xff1a;打造智能交流 Python 是一种易于学习、灵活性强、最近几年得到广泛应用的编程语言。在当今数字化时代&#xff0c;即便是日常生活中我们都需要与人交流&#xff0c;但人们社交媒体的繁荣已经印证了人们对在线交流工具的需求。以下将对 Python 如…

澳洲学生用ChatGPT代写?澳洲多所高校使用全新反击工具检测

朋友们听句劝 ChatGPT可太危险了 ChatGPT有多火&#xff1f;据2月1日瑞银发布的一项研究报告显示&#xff0c;仅仅发布两个月&#xff0c;ChatGPT月活跃用户已达1亿&#xff0c;这是历史上增长速度最快的应用。要知道达成1亿用户的时间&#xff0c;Instagram用了2.5年&#xf…

【013】C++数组之一维数值数组和二维数值数组

一维数值数组和二维数值数组 引言一、一维数值数组1.1、概念1.2、一维数值数组的定义1.3、一维数值数组的初始化1.4、一维数值数组的元素操作1.5、使用示例 二、二维数值数组2.1、概述2.2、二维数值数组的初始化2.3、二维数值数组的元素操作2.4、使用示例 总结 引言 &#x1f4…

​LeetCode解法汇总1091. 二进制矩阵中的最短路径

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给你一个 n x n 的二进制矩阵 grid 中&#xff0c;返回矩阵中最短 畅通路径 的长…

修改优美移动端中间的老师的轮播图

副标题在高级内容那&#xff0c;如果缩略图上传不上去。那就是改一下图片名字&#xff0c;多刷新几次试试

Java程序设计入门教程--整数类型

举例 int x123; //指定变量x为int型&#xff0c;且赋初值为123 byte b8; //指定变量b为byte型&#xff0c;且赋初值为8 short s10; //指定变量s为short型&#xff0c;且赋初值为10 long y123L,z123l; //指定变量y,z为long型&#xff0c;且分别赋初值为123 示例代…

公文写作素材:为人处世类过渡句50例

1.身处逆境&#xff0c;敢于亮剑&#xff0c;坚毅前行&#xff0c;方能逆势突围&#xff1b;面对困难&#xff0c;坚定信心&#xff0c;敢拼敢闯&#xff0c;定能笑到最后。 2.没有海纳百川的胸怀&#xff0c;怎能容得下不同性格的人&#xff1b;没有从善如流的雅量&#xff0…

Python中处理无效数据的详细教程(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

云原生之深入解析Kubernetes的网络模型

一、前言 Kubernetes 是为运行分布式集群而建立的&#xff0c;分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分&#xff0c;了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。网络所涉及的内容很多&#xff0c;拥有许多成熟的技术。对于…

chatgpt赋能python:Python做GUI:介绍与优化SEO

Python做GUI&#xff1a;介绍与优化SEO Python是一种受欢迎的编程语言&#xff0c;尤其是在数据分析和开发领域。但是&#xff0c;Python也可以用于GUI&#xff08;图形用户界面&#xff09;应用程序的开发。在本文中&#xff0c;我们将介绍Python GUI开发的基础知识&#xff…

滤镜美颜sdk的实现方式和工作流程:从技术层面了解美颜算法

众所周知&#xff0c;实现美颜功能的核心技术之一就是滤镜美颜sdk。在本文中&#xff0c;我们将从技术层面来探讨滤镜美颜sdk的实现方式和工作流程&#xff0c;帮助读者更深入了解美颜算法。 一、美颜算法的基本原理 美颜算法的基本原理是通过图像处理技术&#xff0c;对人物…

第十八章_Redis缓存预热+缓存雪崩+缓存击穿+缓存穿透

缓存预热 缓存预热就是系统启动前&#xff0c;提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候&#xff0c;先查询数据库&#xff0c;然后再将数据缓存的问题&#xff01;用户直接查询事先被预热的缓存数据。 可以通过PostConstruct初始化白名单数据 缓存雪崩 …

23种设计模式之命令模式(Command Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的命令模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

CASIA-FaceV5 抠出的人脸数据集

CASIA-FaceV5亚洲人脸数据集&#xff0c;以该数据集作为测试集所生成的同一人和不同人对应的测试文件。 CASIA-FaceV5亚洲人脸数据集有500人、每个人5张图片&#xff0c;共2500张图片&#xff0c;图片大小为640*480。数据集共有500个文件夹&#xff0c;文件夹名称为&#xff1…

【实战记录】手游内存优化(内存泄露检测)

故事背景&#xff1a; 手上有一个完整的页游项目&#xff0c;线上运营数据还不错&#xff0c;所以打算把这个项目手游化。因为这个项目本来就是用cocos的creator写的&#xff0c;所以手游化成本比较低&#xff0c;在修改了大概6~7个只能在页游上运行的接口后&#xff0…

Ansible介绍

文章目录 Ansible介绍Ansible的架构为什么要有Ansible TowerAnsible Tower Ansible介绍 Ansible是一种自动化工具&#xff0c;可以用于自动化部署、配置和管理IT基础设施。它是一种基于Python的开源软件&#xff0c;提供了一个简单易用的语言和工具集&#xff0c;使得自动化管…

内网渗透—代理Socks协议、路由不出网、SMB绕过、CS-MSF控制上线

内网渗透—代理Socks协议、路由不出网、SMB绕过、CS-MSF控制上线 1. 前言1.1. 实验背景1.2. 环境准备1.2.1. 环境介绍1.2.2. 环境测试 2. CS上线2.1. Windows2008上线2.2. Windows2003上线2.2.1. 设置socks代理2.2.2. 设置正向连接2.2.3. 生成木马2.2.4. 上线木马 2.3. Windows…

Flutter数据库操作看这一篇就够了

文章目录 Flutter常用数据库操作库最常用的sqflite介绍简介举例 依赖sqflite,单例模式封装一个sqlite操作类说明initDb说明conflictAlgorithm说明 Flutter常用数据库操作库 Flutter是一种跨平台的移动应用程序开发框架&#xff0c;支持使用多种类型的数据库进行数据存储和管理…

【CSDN快速获得铁粉小经验】厉昱辰的经验分享

如何快速的涨粉呢&#xff1f;今天将带领大家一起涨粉喽&#x1f970;&#x1f970;&#x1f973;&#x1f973; 一、最低阅读量过滤 官方算法进行最低阅读量过滤&#xff0c;阅读量太低的直接不参与热榜计算&#xff0c;刚创建的文章应该在其他渠道有一些冷启动的过程。但是阅…

c++ 11标准模板(STL) std::map(四)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…