腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
标签
jsp
#
jsp
动态网页技术标准
关注
专栏文章
(2.1K)
技术视频
(108)
互动问答
(214)
JSP的数据库连接类是什么
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP的数据库连接类通常指用于封装数据库连接逻辑的自定义Java类,常见实现方式是通过JDBC(Java Database Connectivity)技术连接数据库。核心是创建一个继承或包含`java.sql.Connection`操作的类,负责加载驱动、建立连接、关闭资源等。 例如,一个典型的JSP数据库连接类可能如下: ```java import java.sql.*; public class DBConnection { private static final String URL = "jdbc:mysql://localhost:3306/数据库名"; private static final String USER = "用户名"; private static final String PASSWORD = "密码"; public static Connection getConnection() throws SQLException { try { Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL驱动 return DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { throw new SQLException("数据库驱动加载失败", e); } } public static void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在JSP页面中调用: ```jsp <%@ page import="java.sql.*,你的包名.DBConnection" %> <% Connection conn = null; try { conn = DBConnection.getConnection(); // 执行SQL操作... } catch (SQLException e) { e.printStackTrace(); } finally { DBConnection.close(conn); } %> ``` 腾讯云相关产品推荐:若部署在云端,可使用**腾讯云数据库MySQL**(兼容MySQL协议,提供高可用、弹性扩展能力)搭配**腾讯云服务器CVM**运行JSP应用,或使用**腾讯云轻量应用服务器**快速搭建环境。数据库连接参数需替换为腾讯云数据库的内网/外网地址及账号信息。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP的数据库连接类通常指用于封装数据库连接逻辑的自定义Java类,常见实现方式是通过JDBC(Java Database Connectivity)技术连接数据库。核心是创建一个继承或包含`java.sql.Connection`操作的类,负责加载驱动、建立连接、关闭资源等。 例如,一个典型的JSP数据库连接类可能如下: ```java import java.sql.*; public class DBConnection { private static final String URL = "jdbc:mysql://localhost:3306/数据库名"; private static final String USER = "用户名"; private static final String PASSWORD = "密码"; public static Connection getConnection() throws SQLException { try { Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL驱动 return DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException e) { throw new SQLException("数据库驱动加载失败", e); } } public static void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在JSP页面中调用: ```jsp <%@ page import="java.sql.*,你的包名.DBConnection" %> <% Connection conn = null; try { conn = DBConnection.getConnection(); // 执行SQL操作... } catch (SQLException e) { e.printStackTrace(); } finally { DBConnection.close(conn); } %> ``` 腾讯云相关产品推荐:若部署在云端,可使用**腾讯云数据库MySQL**(兼容MySQL协议,提供高可用、弹性扩展能力)搭配**腾讯云服务器CVM**运行JSP应用,或使用**腾讯云轻量应用服务器**快速搭建环境。数据库连接参数需替换为腾讯云数据库的内网/外网地址及账号信息。
jsp数据库为什么不能用中文
1
回答
jsp
、
数据库
gavin1024
JSP数据库不能用中文通常是因为字符编码设置不正确,导致中文数据在存储或读取时出现乱码或报错。 **原因解释:** 1. **数据库编码不支持中文**:如果数据库表的字符集是`latin1`等非UTF-8编码,无法正确存储中文字符。 2. **JSP页面编码未统一**:JSP文件本身、请求参数或响应输出的编码未设置为UTF-8,导致中文传输时乱码。 3. **连接字符串未指定编码**:数据库连接URL中没有明确指定UTF-8编码,如MySQL需添加`useUnicode=true&characterEncoding=UTF-8`。 **解决方法:** 1. **数据库层面**:确保表或字段的字符集是`utf8mb4`(兼容所有Unicode字符,包括emoji)。 2. **JSP页面**:在JSP顶部添加`<%@ page contentType="text/html;charset=UTF-8" language="java" %>`,并设置请求和响应编码: ```java request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); ``` 3. **数据库连接**:在JDBC连接字符串中指定UTF-8,例如MySQL: ```java jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8 ``` **示例:** 若数据库使用MySQL,创建表时指定UTF-8编码: ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ) DEFAULT CHARSET=utf8mb4; ``` **腾讯云相关产品推荐:** - **云数据库MySQL**:支持`utf8mb4`编码,可直接配置中文存储,无需手动调整底层设置。 - **云服务器(CVM)**:部署JSP应用时,确保服务器环境(如Tomcat)的默认编码为UTF-8。 - **云开发(TCB)**:提供全栈支持,简化数据库和编码配置流程,适合快速开发含中文的Web应用。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP数据库不能用中文通常是因为字符编码设置不正确,导致中文数据在存储或读取时出现乱码或报错。 **原因解释:** 1. **数据库编码不支持中文**:如果数据库表的字符集是`latin1`等非UTF-8编码,无法正确存储中文字符。 2. **JSP页面编码未统一**:JSP文件本身、请求参数或响应输出的编码未设置为UTF-8,导致中文传输时乱码。 3. **连接字符串未指定编码**:数据库连接URL中没有明确指定UTF-8编码,如MySQL需添加`useUnicode=true&characterEncoding=UTF-8`。 **解决方法:** 1. **数据库层面**:确保表或字段的字符集是`utf8mb4`(兼容所有Unicode字符,包括emoji)。 2. **JSP页面**:在JSP顶部添加`<%@ page contentType="text/html;charset=UTF-8" language="java" %>`,并设置请求和响应编码: ```java request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); ``` 3. **数据库连接**:在JDBC连接字符串中指定UTF-8,例如MySQL: ```java jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8 ``` **示例:** 若数据库使用MySQL,创建表时指定UTF-8编码: ```sql CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ) DEFAULT CHARSET=utf8mb4; ``` **腾讯云相关产品推荐:** - **云数据库MySQL**:支持`utf8mb4`编码,可直接配置中文存储,无需手动调整底层设置。 - **云服务器(CVM)**:部署JSP应用时,确保服务器环境(如Tomcat)的默认编码为UTF-8。 - **云开发(TCB)**:提供全栈支持,简化数据库和编码配置流程,适合快速开发含中文的Web应用。
jsp连接数据库采用什么技术
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP连接数据库主要采用JDBC(Java Database Connectivity)技术。 **解释**:JDBC是Java提供的标准API,用于与各种关系型数据库交互。它通过驱动程序管理器加载特定数据库的驱动,建立连接后执行SQL语句,处理结果集。JSP作为Java Web技术,常结合JDBC实现动态数据展示。 **举例**:在JSP页面中连接MySQL数据库的代码片段: ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println(rs.getString("username")); } rs.close(); stmt.close(); conn.close(); %> ``` **腾讯云相关产品推荐**:若部署在云端,可使用**腾讯云数据库MySQL**(提供高可用、弹性扩展的托管服务),搭配**云服务器CVM**运行JSP应用,或使用**轻量应用服务器**简化部署。数据库连接需配置安全组规则开放端口,并建议使用**SSL加密连接**提升安全性。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP连接数据库主要采用JDBC(Java Database Connectivity)技术。 **解释**:JDBC是Java提供的标准API,用于与各种关系型数据库交互。它通过驱动程序管理器加载特定数据库的驱动,建立连接后执行SQL语句,处理结果集。JSP作为Java Web技术,常结合JDBC实现动态数据展示。 **举例**:在JSP页面中连接MySQL数据库的代码片段: ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println(rs.getString("username")); } rs.close(); stmt.close(); conn.close(); %> ``` **腾讯云相关产品推荐**:若部署在云端,可使用**腾讯云数据库MySQL**(提供高可用、弹性扩展的托管服务),搭配**云服务器CVM**运行JSP应用,或使用**轻量应用服务器**简化部署。数据库连接需配置安全组规则开放端口,并建议使用**SSL加密连接**提升安全性。
jsp 连接数据库导入什么包
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP连接数据库通常需要导入JDBC(Java Database Connectivity)相关的包,核心是`java.sql`包,它包含了操作数据库的基础类和接口,如`Connection`、`Statement`、`ResultSet`等。 ### 常用导入语句: ```jsp <%@ page import="java.sql.*" %> ``` ### 具体步骤和示例: 1. **加载数据库驱动**(不同数据库驱动类不同) 2. **建立数据库连接**(通过`DriverManager.getConnection`) 3. **执行SQL语句**(通过`Statement`或`PreparedStatement`) 4. **处理结果集**(查询时用`ResultSet`) 5. **关闭资源**(连接、语句、结果集) #### 示例代码(以MySQL为例): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String user = "用户名"; String password = "密码"; try { // 1. 加载驱动(MySQL 8.0+驱动类) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立连接 Connection conn = DriverManager.getConnection(url, user, password); // 3. 执行查询 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM 表名"); // 4. 处理结果 while (rs.next()) { out.println(rs.getString("字段名") + "<br>"); } // 5. 关闭资源 rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> ``` ### 不同数据库的驱动和URL示例: - **MySQL**:驱动类`com.mysql.cj.jdbc.Driver`,URL格式`jdbc:mysql://主机:端口/数据库名` - **Oracle**:驱动类`oracle.jdbc.driver.OracleDriver`,URL格式`jdbc:oracle:thin:@主机:端口:SID` - **SQL Server**:驱动类`com.microsoft.sqlserver.jdbc.SQLServerDriver`,URL格式`jdbc:sqlserver://主机:端口;databaseName=数据库名` ### 腾讯云相关产品推荐: - **云数据库 MySQL**:腾讯云提供的稳定MySQL服务,兼容标准JDBC连接,适合快速部署数据库。 - **云数据库 PostgreSQL/TDSQL-C**:支持高并发场景,同样可通过JDBC连接。 - **连接方式**:在腾讯云控制台获取数据库实例的内网/公网地址、端口、账号密码后,替换示例中的连接信息即可。 注意:实际项目中建议将数据库配置(如URL、账号密码)放在`web.xml`或环境变量中,避免硬编码在JSP里。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP连接数据库通常需要导入JDBC(Java Database Connectivity)相关的包,核心是`java.sql`包,它包含了操作数据库的基础类和接口,如`Connection`、`Statement`、`ResultSet`等。 ### 常用导入语句: ```jsp <%@ page import="java.sql.*" %> ``` ### 具体步骤和示例: 1. **加载数据库驱动**(不同数据库驱动类不同) 2. **建立数据库连接**(通过`DriverManager.getConnection`) 3. **执行SQL语句**(通过`Statement`或`PreparedStatement`) 4. **处理结果集**(查询时用`ResultSet`) 5. **关闭资源**(连接、语句、结果集) #### 示例代码(以MySQL为例): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String user = "用户名"; String password = "密码"; try { // 1. 加载驱动(MySQL 8.0+驱动类) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立连接 Connection conn = DriverManager.getConnection(url, user, password); // 3. 执行查询 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM 表名"); // 4. 处理结果 while (rs.next()) { out.println(rs.getString("字段名") + "<br>"); } // 5. 关闭资源 rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> ``` ### 不同数据库的驱动和URL示例: - **MySQL**:驱动类`com.mysql.cj.jdbc.Driver`,URL格式`jdbc:mysql://主机:端口/数据库名` - **Oracle**:驱动类`oracle.jdbc.driver.OracleDriver`,URL格式`jdbc:oracle:thin:@主机:端口:SID` - **SQL Server**:驱动类`com.microsoft.sqlserver.jdbc.SQLServerDriver`,URL格式`jdbc:sqlserver://主机:端口;databaseName=数据库名` ### 腾讯云相关产品推荐: - **云数据库 MySQL**:腾讯云提供的稳定MySQL服务,兼容标准JDBC连接,适合快速部署数据库。 - **云数据库 PostgreSQL/TDSQL-C**:支持高并发场景,同样可通过JDBC连接。 - **连接方式**:在腾讯云控制台获取数据库实例的内网/公网地址、端口、账号密码后,替换示例中的连接信息即可。 注意:实际项目中建议将数据库配置(如URL、账号密码)放在`web.xml`或环境变量中,避免硬编码在JSP里。
jsp一般搭配什么数据库
1
回答
jsp
、
数据库
gavin1024
JSP(JavaServer Pages)通常搭配关系型数据库,最常用的是 **MySQL** 和 **Oracle**,也可以使用 **PostgreSQL**、**SQL Server** 等。 ### 解释: 1. **MySQL**:轻量级、开源、免费,适合中小型项目,部署简单,性能优秀,是JSP开发的首选数据库之一。 2. **Oracle**:企业级数据库,功能强大,稳定性高,适合大型商业系统,但成本较高。 3. **PostgreSQL**:开源、功能丰富,支持高级SQL特性,适合复杂业务场景。 4. **SQL Server**:微软推出的数据库,与Windows生态集成良好,适合.NET和Java混合开发环境。 ### 举例: - **小型电商网站**:JSP + MySQL(成本低,易维护) - **银行系统**:JSP + Oracle(高安全性、事务处理强) - **企业内部管理系统**:JSP + PostgreSQL(开源且功能全面) ### 腾讯云相关产品推荐: - **云数据库 MySQL**(高性能、高可用,适合Web应用) - **云数据库 PostgreSQL**(支持JSON、GIS等高级特性) - **云数据库 MariaDB**(兼容MySQL,适用于高并发场景) - **TDSQL-C(原CynosDB)**(云原生数据库,兼容MySQL/PostgreSQL,自动扩缩容) 在JSP项目中,通常使用 **JDBC(Java Database Connectivity)** 连接数据库,例如通过 `mysql-connector-java` 驱动连接MySQL。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP(JavaServer Pages)通常搭配关系型数据库,最常用的是 **MySQL** 和 **Oracle**,也可以使用 **PostgreSQL**、**SQL Server** 等。 ### 解释: 1. **MySQL**:轻量级、开源、免费,适合中小型项目,部署简单,性能优秀,是JSP开发的首选数据库之一。 2. **Oracle**:企业级数据库,功能强大,稳定性高,适合大型商业系统,但成本较高。 3. **PostgreSQL**:开源、功能丰富,支持高级SQL特性,适合复杂业务场景。 4. **SQL Server**:微软推出的数据库,与Windows生态集成良好,适合.NET和Java混合开发环境。 ### 举例: - **小型电商网站**:JSP + MySQL(成本低,易维护) - **银行系统**:JSP + Oracle(高安全性、事务处理强) - **企业内部管理系统**:JSP + PostgreSQL(开源且功能全面) ### 腾讯云相关产品推荐: - **云数据库 MySQL**(高性能、高可用,适合Web应用) - **云数据库 PostgreSQL**(支持JSON、GIS等高级特性) - **云数据库 MariaDB**(兼容MySQL,适用于高并发场景) - **TDSQL-C(原CynosDB)**(云原生数据库,兼容MySQL/PostgreSQL,自动扩缩容) 在JSP项目中,通常使用 **JDBC(Java Database Connectivity)** 连接数据库,例如通过 `mysql-connector-java` 驱动连接MySQL。
如何在JSP页面中访问数据库数据?
1
回答
jsp
、
数据库
、
数据
gavin1024
在JSP页面中访问数据库数据通常通过JDBC(Java Database Connectivity)实现,步骤如下: 1. **加载数据库驱动**:使用`Class.forName()`加载对应数据库的JDBC驱动(如MySQL需加载`com.mysql.jdbc.Driver`)。 2. **建立数据库连接**:通过`DriverManager.getConnection()`方法传入URL、用户名和密码获取连接对象。 3. **执行SQL查询**:使用`Statement`或`PreparedStatement`对象执行SQL语句,通过`ResultSet`获取查询结果。 4. **处理结果并展示**:遍历`ResultSet`,将数据输出到JSP页面(通常用HTML表格或JSTL标签渲染)。 5. **关闭资源**:按顺序关闭`ResultSet`、`Statement`和`Connection`释放连接。 **示例代码**(MySQL数据库): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "123456"; try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>"); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> ``` **优化建议**: - 使用**连接池**(如Tomcat JDBC Pool或DBCP)管理数据库连接,避免频繁创建/销毁连接。 - 将数据库操作逻辑封装到Java类(如DAO模式),避免在JSP中直接编写SQL(遵循MVC分层)。 - 对用户输入使用`PreparedStatement`防止SQL注入。 **腾讯云相关产品推荐**: - 数据库服务:使用**腾讯云数据库MySQL**(TencentDB for MySQL)或**云原生数据库TDSQL**,提供高可用和自动备份功能。 - 服务器部署:搭配**腾讯云轻量应用服务器**或**云服务器CVM**运行JSP应用,通过内网连接数据库降低延迟。 - 连接池工具:可集成开源连接池如**HikariCP**提升性能。...
展开详请
赞
0
收藏
0
评论
0
分享
在JSP页面中访问数据库数据通常通过JDBC(Java Database Connectivity)实现,步骤如下: 1. **加载数据库驱动**:使用`Class.forName()`加载对应数据库的JDBC驱动(如MySQL需加载`com.mysql.jdbc.Driver`)。 2. **建立数据库连接**:通过`DriverManager.getConnection()`方法传入URL、用户名和密码获取连接对象。 3. **执行SQL查询**:使用`Statement`或`PreparedStatement`对象执行SQL语句,通过`ResultSet`获取查询结果。 4. **处理结果并展示**:遍历`ResultSet`,将数据输出到JSP页面(通常用HTML表格或JSTL标签渲染)。 5. **关闭资源**:按顺序关闭`ResultSet`、`Statement`和`Connection`释放连接。 **示例代码**(MySQL数据库): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "123456"; try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>"); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> ``` **优化建议**: - 使用**连接池**(如Tomcat JDBC Pool或DBCP)管理数据库连接,避免频繁创建/销毁连接。 - 将数据库操作逻辑封装到Java类(如DAO模式),避免在JSP中直接编写SQL(遵循MVC分层)。 - 对用户输入使用`PreparedStatement`防止SQL注入。 **腾讯云相关产品推荐**: - 数据库服务:使用**腾讯云数据库MySQL**(TencentDB for MySQL)或**云原生数据库TDSQL**,提供高可用和自动备份功能。 - 服务器部署:搭配**腾讯云轻量应用服务器**或**云服务器CVM**运行JSP应用,通过内网连接数据库降低延迟。 - 连接池工具:可集成开源连接池如**HikariCP**提升性能。
jsp从数据库中取得是什么结果
1
回答
jsp
、
数据库
gavin1024
JSP从数据库中取得的结果通常是查询返回的数据集合,常见形式是**ResultSet对象(Java JDBC)**或**封装后的数据对象列表(如List<Map>、List<实体类>)**。 ### 解释: 1. **ResultSet**:通过JDBC连接数据库执行SQL查询后,返回的结果集,以表格形式存放数据,可通过next()方法逐行读取,用getXxx()方法获取每列的值。 2. **封装对象**:为便于在JSP页面展示和业务逻辑处理,常将ResultSet中的数据提取出来,封装到JavaBean(实体类)中,或者以Map、List等集合形式传递给前端页面。 ### 举例: 假设有一个用户表user,包含字段id、name、email,使用JSP+JDBC从数据库查询所有用户信息: ```java // 后端Java代码(通常放在Servlet或DAO中) Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; List<User> userList = new ArrayList<>(); try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password"); pstmt = conn.prepareStatement("SELECT id, name, email FROM user"); rs = pstmt.executeQuery(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 } ``` 然后在JSP页面中,可以通过EL表达式或JSTL标签循环展示这个userList: ```jsp <c:forEach items="${userList}" var="user"> ID: ${user.id}, 姓名: ${user.name}, 邮箱: ${user.email}<br/> </c:forEach> ``` ### 腾讯云相关产品推荐: - 如需在云端运行JSP应用并连接数据库,可使用**腾讯云轻量应用服务器**或**腾讯云云服务器CVM**部署Java Web环境。 - 数据库服务推荐使用**腾讯云MySQL数据库(TencentDB for MySQL)**,提供稳定可靠的关系型数据库服务,支持高可用、备份与恢复等功能。 - 应用部署和运行环境可搭配**腾讯云容器服务TKE**或使用**腾讯云Serverless云函数**(适合无服务器架构场景)。 - 若项目规模较大,推荐使用**腾讯云微服务平台TMF**进行微服务化管理和部署。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP从数据库中取得的结果通常是查询返回的数据集合,常见形式是**ResultSet对象(Java JDBC)**或**封装后的数据对象列表(如List<Map>、List<实体类>)**。 ### 解释: 1. **ResultSet**:通过JDBC连接数据库执行SQL查询后,返回的结果集,以表格形式存放数据,可通过next()方法逐行读取,用getXxx()方法获取每列的值。 2. **封装对象**:为便于在JSP页面展示和业务逻辑处理,常将ResultSet中的数据提取出来,封装到JavaBean(实体类)中,或者以Map、List等集合形式传递给前端页面。 ### 举例: 假设有一个用户表user,包含字段id、name、email,使用JSP+JDBC从数据库查询所有用户信息: ```java // 后端Java代码(通常放在Servlet或DAO中) Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; List<User> userList = new ArrayList<>(); try { conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password"); pstmt = conn.prepareStatement("SELECT id, name, email FROM user"); rs = pstmt.executeQuery(); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭资源 } ``` 然后在JSP页面中,可以通过EL表达式或JSTL标签循环展示这个userList: ```jsp <c:forEach items="${userList}" var="user"> ID: ${user.id}, 姓名: ${user.name}, 邮箱: ${user.email}<br/> </c:forEach> ``` ### 腾讯云相关产品推荐: - 如需在云端运行JSP应用并连接数据库,可使用**腾讯云轻量应用服务器**或**腾讯云云服务器CVM**部署Java Web环境。 - 数据库服务推荐使用**腾讯云MySQL数据库(TencentDB for MySQL)**,提供稳定可靠的关系型数据库服务,支持高可用、备份与恢复等功能。 - 应用部署和运行环境可搭配**腾讯云容器服务TKE**或使用**腾讯云Serverless云函数**(适合无服务器架构场景)。 - 若项目规模较大,推荐使用**腾讯云微服务平台TMF**进行微服务化管理和部署。
jsp页面为什么重复加载数据库
1
回答
jsp
、
数据库
gavin1024
JSP页面重复加载数据库通常由以下原因导致: 1. **无缓存机制** 每次请求JSP时都直接查询数据库,未对静态或低频变更数据做缓存处理。 2. **页面逻辑缺陷** 在循环或条件判断中重复调用数据库查询语句(如嵌套的`<% %>`脚本片段)。 3. **转发/重定向不当** 未合理使用`RequestDispatcher`转发,导致多次执行包含数据库查询的JSP片段。 4. **会话/应用级数据未共享** 本可存储在`session`或`application`作用域的数据,每次请求都重新查询。 5. **前端频繁触发请求** 页面通过AJAX或表单提交反复调用后端JSP接口。 --- **示例场景** ```jsp <% // 错误示范:每次页面渲染都查询数据库 for(int i=0; i<10; i++) { ResultSet rs = stmt.executeQuery("SELECT * FROM products"); // 重复查询 } %> ``` --- **解决方案** 1. **使用缓存** 对频繁访问的数据(如商品分类),用`application`作用域缓存或腾讯云**Redis**(TencentDB for Redis)存储。 2. **优化JSP逻辑** 将数据库操作移至Servlet或JavaBean中,JSP仅负责显示。 3. **合理使用作用域** ```jsp <%-- 首次加载时存入application --%> <% if(application.getAttribute("cachedData")==null) { application.setAttribute("cachedData", dao.queryData()); } %> ``` 4. **腾讯云相关产品推荐** - **腾讯云数据库MySQL/MariaDB**:优化慢查询,启用读写分离。 - **腾讯云Redis**:缓存热点数据,减少直接DB访问。 - **腾讯云CDN**:静态化JSP生成的HTML页面,降低后端压力。 5. **静态化处理** 对不常变的内容(如帮助文档),生成静态HTML或使用腾讯云**对象存储(COS)**托管。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP页面重复加载数据库通常由以下原因导致: 1. **无缓存机制** 每次请求JSP时都直接查询数据库,未对静态或低频变更数据做缓存处理。 2. **页面逻辑缺陷** 在循环或条件判断中重复调用数据库查询语句(如嵌套的`<% %>`脚本片段)。 3. **转发/重定向不当** 未合理使用`RequestDispatcher`转发,导致多次执行包含数据库查询的JSP片段。 4. **会话/应用级数据未共享** 本可存储在`session`或`application`作用域的数据,每次请求都重新查询。 5. **前端频繁触发请求** 页面通过AJAX或表单提交反复调用后端JSP接口。 --- **示例场景** ```jsp <% // 错误示范:每次页面渲染都查询数据库 for(int i=0; i<10; i++) { ResultSet rs = stmt.executeQuery("SELECT * FROM products"); // 重复查询 } %> ``` --- **解决方案** 1. **使用缓存** 对频繁访问的数据(如商品分类),用`application`作用域缓存或腾讯云**Redis**(TencentDB for Redis)存储。 2. **优化JSP逻辑** 将数据库操作移至Servlet或JavaBean中,JSP仅负责显示。 3. **合理使用作用域** ```jsp <%-- 首次加载时存入application --%> <% if(application.getAttribute("cachedData")==null) { application.setAttribute("cachedData", dao.queryData()); } %> ``` 4. **腾讯云相关产品推荐** - **腾讯云数据库MySQL/MariaDB**:优化慢查询,启用读写分离。 - **腾讯云Redis**:缓存热点数据,减少直接DB访问。 - **腾讯云CDN**:静态化JSP生成的HTML页面,降低后端压力。 5. **静态化处理** 对不常变的内容(如帮助文档),生成静态HTML或使用腾讯云**对象存储(COS)**托管。
在jsp中怎样实现数据库连接池
1
回答
jsp
、
数据库连接池
gavin1024
在JSP中实现数据库连接池通常通过以下方式: 1. **使用第三方连接池库**(如DBCP、C3P0、HikariCP等) 2. **配置连接池参数**(最大连接数、最小空闲连接等) 3. **在JSP/Servlet中获取连接** ### 实现步骤(以DBCP为例): 1. 添加依赖(Maven): ```xml <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> ``` 2. 创建连接池工具类(DBUtil.java): ```java import org.apache.commons.dbcp2.BasicDataSource; public class DBUtil { private static BasicDataSource dataSource; static { dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/testdb"); dataSource.setUsername("root"); dataSource.setPassword("password"); dataSource.setInitialSize(5); // 初始连接数 dataSource.setMaxTotal(20); // 最大连接数 } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } } ``` 3. 在JSP中使用: ```jsp <%@ page import="java.sql.*, your.package.DBUtil" %> <% Connection conn = null; try { conn = DBUtil.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println(rs.getString("username")); } } catch(SQLException e) { e.printStackTrace(); } finally { if(conn != null) conn.close(); // 实际是归还到连接池 } %> ``` ### 腾讯云相关产品推荐: - **云数据库MySQL**:腾讯云提供的托管MySQL服务,与连接池配合使用更稳定 - **TDSQL**:腾讯云分布式数据库,适合高并发场景 - **弹性MapReduce**:如需大数据量处理可搭配使用 ### 其他方案: 1. **Tomcat JDBC连接池**(内置于Tomcat): 在context.xml中配置: ```xml <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" username="root" password="password" maxTotal="20" initialSize="5"/> ``` 然后在代码中通过JNDI获取: ```java Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/TestDB"); Connection conn = ds.getConnection(); ``` 2. **Spring框架集成**(如使用Spring MVC): 通过`<bean>`配置连接池,更推荐在Web项目中使用。...
展开详请
赞
0
收藏
0
评论
0
分享
在JSP中实现数据库连接池通常通过以下方式: 1. **使用第三方连接池库**(如DBCP、C3P0、HikariCP等) 2. **配置连接池参数**(最大连接数、最小空闲连接等) 3. **在JSP/Servlet中获取连接** ### 实现步骤(以DBCP为例): 1. 添加依赖(Maven): ```xml <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> ``` 2. 创建连接池工具类(DBUtil.java): ```java import org.apache.commons.dbcp2.BasicDataSource; public class DBUtil { private static BasicDataSource dataSource; static { dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/testdb"); dataSource.setUsername("root"); dataSource.setPassword("password"); dataSource.setInitialSize(5); // 初始连接数 dataSource.setMaxTotal(20); // 最大连接数 } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } } ``` 3. 在JSP中使用: ```jsp <%@ page import="java.sql.*, your.package.DBUtil" %> <% Connection conn = null; try { conn = DBUtil.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println(rs.getString("username")); } } catch(SQLException e) { e.printStackTrace(); } finally { if(conn != null) conn.close(); // 实际是归还到连接池 } %> ``` ### 腾讯云相关产品推荐: - **云数据库MySQL**:腾讯云提供的托管MySQL服务,与连接池配合使用更稳定 - **TDSQL**:腾讯云分布式数据库,适合高并发场景 - **弹性MapReduce**:如需大数据量处理可搭配使用 ### 其他方案: 1. **Tomcat JDBC连接池**(内置于Tomcat): 在context.xml中配置: ```xml <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" username="root" password="password" maxTotal="20" initialSize="5"/> ``` 然后在代码中通过JNDI获取: ```java Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/TestDB"); Connection conn = ds.getConnection(); ``` 2. **Spring框架集成**(如使用Spring MVC): 通过`<bean>`配置连接池,更推荐在Web项目中使用。
jsp与数据库用什么语句连接
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP 连接数据库通常使用 JDBC(Java Database Connectivity)技术,核心是通过 `DriverManager.getConnection()` 方法建立连接。以下是关键步骤和示例: --- ### **1. 基本连接语句(以 MySQL 为例)** ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String username = "数据库用户名"; String password = "数据库密码"; try { // 加载驱动(MySQL 8.0+ 可省略此步,但建议保留) Class.forName("com.mysql.cj.jdbc.Driver"); // 建立连接 Connection conn = DriverManager.getConnection(url, username, password); out.println("数据库连接成功!"); // 关闭连接(实际开发中建议用 try-with-resources 或 finally 块) conn.close(); } catch (Exception e) { out.println("连接失败: " + e.getMessage()); } %> ``` --- ### **2. 关键说明** - **驱动类名**:不同数据库驱动不同(如 MySQL 用 `com.mysql.cj.jdbc.Driver`,Oracle 用 `oracle.jdbc.driver.OracleDriver`)。 - **JDBC URL 格式**: - MySQL: `jdbc:mysql://主机:端口/数据库名` - PostgreSQL: `jdbc:postgresql://主机:端口/数据库名` - SQL Server: `jdbc:sqlserver://主机:端口;databaseName=数据库名` - **依赖库**:需将对应数据库的 JDBC 驱动 JAR 文件(如 `mysql-connector-java.jar`)放入项目的 `WEB-INF/lib` 目录。 --- ### **3. 完整操作示例(查询数据)** ```jsp <%@ page import="java.sql.*" %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdb", "root", "123456" ); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { out.println("用户名: " + rs.getString("username") + "<br>"); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { out.println("错误: " + e.getMessage()); } %> ``` --- ### **4. 腾讯云相关产品推荐** - **云数据库 TencentDB**:腾讯云提供的 MySQL/PostgreSQL/SQL Server 等数据库服务,支持高可用和自动备份。 - 适用场景:直接替换本地数据库,通过公网或内网连接 JSP 应用。 - **云服务器 CVM**:部署 JSP 应用(如 Tomcat),搭配 TencentDB 使用。 - **连接优化**:使用腾讯云 **私有网络 VPC** 和 **安全组** 配置数据库访问权限,确保安全。 --- ### **注意事项** - 生产环境避免在 JSP 中硬编码数据库信息,建议使用配置文件或环境变量。 - 推荐使用 **连接池**(如 HikariCP、DBCP)管理数据库连接,提升性能(腾讯云 TencentDB 也支持连接池配置)。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP 连接数据库通常使用 JDBC(Java Database Connectivity)技术,核心是通过 `DriverManager.getConnection()` 方法建立连接。以下是关键步骤和示例: --- ### **1. 基本连接语句(以 MySQL 为例)** ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; String username = "数据库用户名"; String password = "数据库密码"; try { // 加载驱动(MySQL 8.0+ 可省略此步,但建议保留) Class.forName("com.mysql.cj.jdbc.Driver"); // 建立连接 Connection conn = DriverManager.getConnection(url, username, password); out.println("数据库连接成功!"); // 关闭连接(实际开发中建议用 try-with-resources 或 finally 块) conn.close(); } catch (Exception e) { out.println("连接失败: " + e.getMessage()); } %> ``` --- ### **2. 关键说明** - **驱动类名**:不同数据库驱动不同(如 MySQL 用 `com.mysql.cj.jdbc.Driver`,Oracle 用 `oracle.jdbc.driver.OracleDriver`)。 - **JDBC URL 格式**: - MySQL: `jdbc:mysql://主机:端口/数据库名` - PostgreSQL: `jdbc:postgresql://主机:端口/数据库名` - SQL Server: `jdbc:sqlserver://主机:端口;databaseName=数据库名` - **依赖库**:需将对应数据库的 JDBC 驱动 JAR 文件(如 `mysql-connector-java.jar`)放入项目的 `WEB-INF/lib` 目录。 --- ### **3. 完整操作示例(查询数据)** ```jsp <%@ page import="java.sql.*" %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testdb", "root", "123456" ); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { out.println("用户名: " + rs.getString("username") + "<br>"); } rs.close(); stmt.close(); conn.close(); } catch (Exception e) { out.println("错误: " + e.getMessage()); } %> ``` --- ### **4. 腾讯云相关产品推荐** - **云数据库 TencentDB**:腾讯云提供的 MySQL/PostgreSQL/SQL Server 等数据库服务,支持高可用和自动备份。 - 适用场景:直接替换本地数据库,通过公网或内网连接 JSP 应用。 - **云服务器 CVM**:部署 JSP 应用(如 Tomcat),搭配 TencentDB 使用。 - **连接优化**:使用腾讯云 **私有网络 VPC** 和 **安全组** 配置数据库访问权限,确保安全。 --- ### **注意事项** - 生产环境避免在 JSP 中硬编码数据库信息,建议使用配置文件或环境变量。 - 推荐使用 **连接池**(如 HikariCP、DBCP)管理数据库连接,提升性能(腾讯云 TencentDB 也支持连接池配置)。
数据库日期函数jsp什么意思
1
回答
jsp
、
数据库
、
函数
gavin1024
JSP(JavaServer Pages)是一种动态网页技术标准,由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它允许在HTML或XML等静态页面中嵌入Java代码,用于生成动态内容。 **数据库日期函数与JSP的关系**: 在JSP中,通常会通过Java代码调用数据库的日期函数(如MySQL的`NOW()`、`DATE_FORMAT()`,Oracle的`SYSDATE`等)来处理日期数据,并将结果展示在网页上。 ### **数据库日期函数(以MySQL为例)** 1. **`NOW()`**:返回当前日期和时间 ```sql SELECT NOW(); -- 返回如 2024-01-01 12:00:00 ``` 2. **`CURDATE()`**:返回当前日期 ```sql SELECT CURDATE(); -- 返回如 2024-01-01 ``` 3. **`CURTIME()`**:返回当前时间 ```sql SELECT CURTIME(); -- 返回如 12:00:00 ``` 4. **`DATE_FORMAT(date, format)`**:格式化日期 ```sql SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 返回如 2024-01-01 ``` ### **JSP 中使用数据库日期函数的示例** ```jsp <%@ page import="java.sql.*" %> <% Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 1. 加载JDBC驱动(以MySQL为例) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立数据库连接(替换成你的数据库URL、用户名和密码) conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 3. 创建Statement对象 stmt = conn.createStatement(); // 4. 执行SQL查询(调用MySQL的NOW()函数) rs = stmt.executeQuery("SELECT NOW()"); if (rs.next()) { String currentDateTime = rs.getString(1); out.println("当前数据库时间: " + currentDateTime); } } catch (Exception e) { e.printStackTrace(); } finally { // 5. 关闭资源 if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } %> ``` **输出示例**: ``` 当前数据库时间: 2024-01-01 12:00:00 ``` ### **腾讯云相关产品推荐** - **云数据库 MySQL**:腾讯云提供的稳定、高性能的MySQL数据库服务,支持日期函数,适用于JSP应用的数据存储。 - **云服务器(CVM)**:可以部署JSP应用(如Tomcat),并结合云数据库MySQL使用。 - **Serverless MySQL**:适用于轻量级应用,按需计费,减少运维成本。 在JSP中操作数据库日期函数时,确保数据库连接正确,并合理使用Java的`java.sql.Date`或`java.util.Date`进行日期处理。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP(JavaServer Pages)是一种动态网页技术标准,由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它允许在HTML或XML等静态页面中嵌入Java代码,用于生成动态内容。 **数据库日期函数与JSP的关系**: 在JSP中,通常会通过Java代码调用数据库的日期函数(如MySQL的`NOW()`、`DATE_FORMAT()`,Oracle的`SYSDATE`等)来处理日期数据,并将结果展示在网页上。 ### **数据库日期函数(以MySQL为例)** 1. **`NOW()`**:返回当前日期和时间 ```sql SELECT NOW(); -- 返回如 2024-01-01 12:00:00 ``` 2. **`CURDATE()`**:返回当前日期 ```sql SELECT CURDATE(); -- 返回如 2024-01-01 ``` 3. **`CURTIME()`**:返回当前时间 ```sql SELECT CURTIME(); -- 返回如 12:00:00 ``` 4. **`DATE_FORMAT(date, format)`**:格式化日期 ```sql SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 返回如 2024-01-01 ``` ### **JSP 中使用数据库日期函数的示例** ```jsp <%@ page import="java.sql.*" %> <% Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 1. 加载JDBC驱动(以MySQL为例) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立数据库连接(替换成你的数据库URL、用户名和密码) conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 3. 创建Statement对象 stmt = conn.createStatement(); // 4. 执行SQL查询(调用MySQL的NOW()函数) rs = stmt.executeQuery("SELECT NOW()"); if (rs.next()) { String currentDateTime = rs.getString(1); out.println("当前数据库时间: " + currentDateTime); } } catch (Exception e) { e.printStackTrace(); } finally { // 5. 关闭资源 if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } %> ``` **输出示例**: ``` 当前数据库时间: 2024-01-01 12:00:00 ``` ### **腾讯云相关产品推荐** - **云数据库 MySQL**:腾讯云提供的稳定、高性能的MySQL数据库服务,支持日期函数,适用于JSP应用的数据存储。 - **云服务器(CVM)**:可以部署JSP应用(如Tomcat),并结合云数据库MySQL使用。 - **Serverless MySQL**:适用于轻量级应用,按需计费,减少运维成本。 在JSP中操作数据库日期函数时,确保数据库连接正确,并合理使用Java的`java.sql.Date`或`java.util.Date`进行日期处理。
为什么jsp获取不到表单的值
1
回答
jsp
、
表单
gavin1024
JSP获取不到表单值通常由以下原因导致: 1. **表单未设置正确方法** 表单默认使用GET方法提交,若JSP代码用`request.getParameter()`获取POST提交的值会失败。需确保表单的`method="post"`与JSP处理方式匹配。 2. **表单字段name属性缺失或错误** JSP通过`request.getParameter("字段名")`获取值,若HTML表单中`<input>`等元素的`name`属性未设置或拼写错误,会导致获取失败。 3. **未正确处理请求编码** 提交中文或特殊字符时,若未设置请求编码(如UTF-8),参数值可能乱码或丢失。需在JSP开头添加`request.setCharacterEncoding("UTF-8")`。 4. **表单未提交到目标JSP页面** 表单的`action`属性未指向正确的JSP页面路径,导致提交到其他页面或未提交。 5. **JSP代码逻辑错误** 如使用错误的变量名或未调用`getParameter()`方法,直接尝试访问不存在的参数。 --- **示例:** HTML表单(注意`method`和`name`): ```html <form action="process.jsp" method="post"> 用户名: <input type="text" name="username"> <!-- 必须有name属性 --> <input type="submit" value="提交"> </form> ``` JSP页面(process.jsp)正确写法: ```jsp <%@ page contentType="text/html;charset=UTF-8" %> <% request.setCharacterEncoding("UTF-8"); // 处理编码 String username = request.getParameter("username"); // 参数名与表单name一致 out.println("用户名: " + username); %> ``` --- **腾讯云相关产品推荐** 若部署JSP应用,可使用**腾讯云轻量应用服务器**快速搭建环境,搭配**腾讯云对象存储(COS)**存储静态资源,或使用**腾讯云数据库MySQL**存储表单数据。对于高并发场景,可结合**腾讯云负载均衡**和**弹性伸缩**服务优化性能。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP获取不到表单值通常由以下原因导致: 1. **表单未设置正确方法** 表单默认使用GET方法提交,若JSP代码用`request.getParameter()`获取POST提交的值会失败。需确保表单的`method="post"`与JSP处理方式匹配。 2. **表单字段name属性缺失或错误** JSP通过`request.getParameter("字段名")`获取值,若HTML表单中`<input>`等元素的`name`属性未设置或拼写错误,会导致获取失败。 3. **未正确处理请求编码** 提交中文或特殊字符时,若未设置请求编码(如UTF-8),参数值可能乱码或丢失。需在JSP开头添加`request.setCharacterEncoding("UTF-8")`。 4. **表单未提交到目标JSP页面** 表单的`action`属性未指向正确的JSP页面路径,导致提交到其他页面或未提交。 5. **JSP代码逻辑错误** 如使用错误的变量名或未调用`getParameter()`方法,直接尝试访问不存在的参数。 --- **示例:** HTML表单(注意`method`和`name`): ```html <form action="process.jsp" method="post"> 用户名: <input type="text" name="username"> <!-- 必须有name属性 --> <input type="submit" value="提交"> </form> ``` JSP页面(process.jsp)正确写法: ```jsp <%@ page contentType="text/html;charset=UTF-8" %> <% request.setCharacterEncoding("UTF-8"); // 处理编码 String username = request.getParameter("username"); // 参数名与表单name一致 out.println("用户名: " + username); %> ``` --- **腾讯云相关产品推荐** 若部署JSP应用,可使用**腾讯云轻量应用服务器**快速搭建环境,搭配**腾讯云对象存储(COS)**存储静态资源,或使用**腾讯云数据库MySQL**存储表单数据。对于高并发场景,可结合**腾讯云负载均衡**和**弹性伸缩**服务优化性能。
jsp为什么获取不到数据库信息
0
回答
jsp
、
数据库
gavin1024
抱歉,该回答内容违规,已被管理员封禁
jsp怎么连接mysql数据库
0
回答
jsp
、
数据库
、
mysql
、
连接
gavin1024
抱歉,该回答内容违规,已被管理员封禁
jsp用什么和数据库进行交互
1
回答
jsp
、
数据库
gavin1024
JSP(JavaServer Pages)通过 **JDBC(Java Database Connectivity)** 与数据库进行交互。JDBC 是 Java 提供的标准 API,用于连接和操作各种关系型数据库(如 MySQL、Oracle、PostgreSQL 等)。 ### 解释: 1. **JDBC 的作用**: JDBC 是 Java 的数据库连接规范,提供了一组接口和类,允许 Java 程序(包括 JSP)执行 SQL 语句,实现数据的增删改查等操作。 2. **基本使用流程**: - 加载数据库驱动(如 MySQL 的 `com.mysql.cj.jdbc.Driver`) - 建立数据库连接(使用 `DriverManager.getConnection()`) - 创建 Statement 或 PreparedStatement 对象来执行 SQL - 执行查询或更新操作 - 处理结果集(ResultSet) - 关闭连接和相关资源 3. **在 JSP 中的使用**: 虽然可以直接在 JSP 页面中编写 JDBC 代码,但通常推荐将数据库操作逻辑封装到 Java 类(如 DAO 模式)中,然后在 JSP 中调用这些类,以提高代码的可维护性和复用性。 --- ### 举例(简单示例,在 JSP 中直接使用 JDBC 连接 MySQL): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "123456"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 1. 加载驱动(新版本可省略) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立连接 conn = DriverManager.getConnection(url, username, password); // 3. 创建 Statement stmt = conn.createStatement(); // 4. 执行查询 String sql = "SELECT * FROM users"; rs = stmt.executeQuery(sql); // 5. 处理结果 while (rs.next()) { out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>"); } } catch (Exception e) { e.printStackTrace(); } finally { // 6. 关闭资源 try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } %> ``` > ⚠️ 注意:为了代码清晰和安全,实际项目中建议使用 **MVC 架构**,将数据库操作放在 Java 类中,JSP 仅负责展示。 --- ### 推荐使用腾讯云相关产品: - **云数据库 TencentDB for MySQL**:腾讯云提供的稳定、可扩展的 MySQL 数据库服务,适合存储 JSP 应用的数据,支持高可用、自动备份、性能优化。 - **云服务器 CVM**:用于部署运行 JSP 的 Web 应用(如搭配 Tomcat、Jetty 等 Java Web 容器)。 - **私有网络 VPC**:可以为你的云数据库和云服务器构建安全隔离的网络环境。 - **云开发 CloudBase**(可选):如果希望更快速地开发应用,也可以考虑使用腾讯云的开发平台,支持 Serverless 架构,简化后端开发流程。 使用腾讯云数据库时,只需在 JSP 中修改数据库连接字符串(URL、用户名、密码等)为腾讯云数据库实例的信息即可实现连接。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP(JavaServer Pages)通过 **JDBC(Java Database Connectivity)** 与数据库进行交互。JDBC 是 Java 提供的标准 API,用于连接和操作各种关系型数据库(如 MySQL、Oracle、PostgreSQL 等)。 ### 解释: 1. **JDBC 的作用**: JDBC 是 Java 的数据库连接规范,提供了一组接口和类,允许 Java 程序(包括 JSP)执行 SQL 语句,实现数据的增删改查等操作。 2. **基本使用流程**: - 加载数据库驱动(如 MySQL 的 `com.mysql.cj.jdbc.Driver`) - 建立数据库连接(使用 `DriverManager.getConnection()`) - 创建 Statement 或 PreparedStatement 对象来执行 SQL - 执行查询或更新操作 - 处理结果集(ResultSet) - 关闭连接和相关资源 3. **在 JSP 中的使用**: 虽然可以直接在 JSP 页面中编写 JDBC 代码,但通常推荐将数据库操作逻辑封装到 Java 类(如 DAO 模式)中,然后在 JSP 中调用这些类,以提高代码的可维护性和复用性。 --- ### 举例(简单示例,在 JSP 中直接使用 JDBC 连接 MySQL): ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC"; String username = "root"; String password = "123456"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 1. 加载驱动(新版本可省略) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 建立连接 conn = DriverManager.getConnection(url, username, password); // 3. 创建 Statement stmt = conn.createStatement(); // 4. 执行查询 String sql = "SELECT * FROM users"; rs = stmt.executeQuery(sql); // 5. 处理结果 while (rs.next()) { out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + "<br>"); } } catch (Exception e) { e.printStackTrace(); } finally { // 6. 关闭资源 try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } %> ``` > ⚠️ 注意:为了代码清晰和安全,实际项目中建议使用 **MVC 架构**,将数据库操作放在 Java 类中,JSP 仅负责展示。 --- ### 推荐使用腾讯云相关产品: - **云数据库 TencentDB for MySQL**:腾讯云提供的稳定、可扩展的 MySQL 数据库服务,适合存储 JSP 应用的数据,支持高可用、自动备份、性能优化。 - **云服务器 CVM**:用于部署运行 JSP 的 Web 应用(如搭配 Tomcat、Jetty 等 Java Web 容器)。 - **私有网络 VPC**:可以为你的云数据库和云服务器构建安全隔离的网络环境。 - **云开发 CloudBase**(可选):如果希望更快速地开发应用,也可以考虑使用腾讯云的开发平台,支持 Serverless 架构,简化后端开发流程。 使用腾讯云数据库时,只需在 JSP 中修改数据库连接字符串(URL、用户名、密码等)为腾讯云数据库实例的信息即可实现连接。
jsp连接数据库有什么难点
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP连接数据库的难点主要包括以下几个方面: 1. **环境配置复杂** 需要正确配置数据库驱动(如MySQL的`mysql-connector-java.jar`)、数据库服务(如MySQL、Oracle等)、以及确保JSP运行环境(如Tomcat)能访问到驱动。配置不当会导致`ClassNotFoundException`或连接失败。 *示例*:若未将MySQL驱动JAR包放入Tomcat的`lib`目录或项目的`WEB-INF/lib`下,运行时会报错找不到驱动类。 2. **连接字符串(URL)格式** 不同数据库的JDBC URL写法不同,需严格遵循格式(如MySQL的`jdbc:mysql://主机:端口/数据库名?参数`)。参数错误(如时区设置)可能导致连接失败。 *示例*:MySQL 8.0+需在URL中添加时区参数: `jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC` 3. **资源管理问题** 数据库连接(`Connection`)、语句对象(`Statement`/`PreparedStatement`)、结果集(`ResultSet`)需手动关闭,否则会导致内存泄漏或连接池耗尽。推荐使用`try-with-resources`或`finally`块确保关闭。 *示例代码片段*: ```java Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); // 执行SQL操作 } finally { if (conn != null) conn.close(); // 确保连接关闭 } ``` 4. **SQL注入风险** 直接拼接SQL语句(如`"SELECT * FROM users WHERE id=" + userInput`)会导致安全漏洞。必须使用`PreparedStatement`预编译语句。 *示例*: ```java PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id=?"); pstmt.setInt(1, userId); // 参数化查询 ``` 5. **连接池管理** 频繁创建/关闭连接性能低下,需使用连接池(如Tomcat JDBC Pool、HikariCP)。配置不当(如最大连接数过小)会导致高并发时请求阻塞。 *腾讯云相关产品推荐*: - 若部署在腾讯云上,可使用**腾讯云数据库MySQL/PostgreSQL**,其内置连接池优化功能,并配合**腾讯云Serverless云函数**或**腾讯云容器服务**实现弹性扩展。 - 腾讯云**Web应用防火墙(WAF)**可防护SQL注入攻击。 6. **字符编码问题** 数据库与JSP页面的字符编码不一致(如UTF-8与GBK混用)会导致乱码。需统一设置(如JDBC URL中添加`useUnicode=true&characterEncoding=UTF-8`)。 7. **事务控制** 多条SQL需事务支持时,需手动管理`conn.setAutoCommit(false)`和`commit()`/`rollback()`,遗漏会导致数据不一致。 *示例*: ```java conn.setAutoCommit(false); try { // 执行多条SQL conn.commit(); // 提交事务 } catch (SQLException e) { conn.rollback(); // 回滚 } ```...
展开详请
赞
0
收藏
0
评论
0
分享
JSP连接数据库的难点主要包括以下几个方面: 1. **环境配置复杂** 需要正确配置数据库驱动(如MySQL的`mysql-connector-java.jar`)、数据库服务(如MySQL、Oracle等)、以及确保JSP运行环境(如Tomcat)能访问到驱动。配置不当会导致`ClassNotFoundException`或连接失败。 *示例*:若未将MySQL驱动JAR包放入Tomcat的`lib`目录或项目的`WEB-INF/lib`下,运行时会报错找不到驱动类。 2. **连接字符串(URL)格式** 不同数据库的JDBC URL写法不同,需严格遵循格式(如MySQL的`jdbc:mysql://主机:端口/数据库名?参数`)。参数错误(如时区设置)可能导致连接失败。 *示例*:MySQL 8.0+需在URL中添加时区参数: `jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC` 3. **资源管理问题** 数据库连接(`Connection`)、语句对象(`Statement`/`PreparedStatement`)、结果集(`ResultSet`)需手动关闭,否则会导致内存泄漏或连接池耗尽。推荐使用`try-with-resources`或`finally`块确保关闭。 *示例代码片段*: ```java Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); // 执行SQL操作 } finally { if (conn != null) conn.close(); // 确保连接关闭 } ``` 4. **SQL注入风险** 直接拼接SQL语句(如`"SELECT * FROM users WHERE id=" + userInput`)会导致安全漏洞。必须使用`PreparedStatement`预编译语句。 *示例*: ```java PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id=?"); pstmt.setInt(1, userId); // 参数化查询 ``` 5. **连接池管理** 频繁创建/关闭连接性能低下,需使用连接池(如Tomcat JDBC Pool、HikariCP)。配置不当(如最大连接数过小)会导致高并发时请求阻塞。 *腾讯云相关产品推荐*: - 若部署在腾讯云上,可使用**腾讯云数据库MySQL/PostgreSQL**,其内置连接池优化功能,并配合**腾讯云Serverless云函数**或**腾讯云容器服务**实现弹性扩展。 - 腾讯云**Web应用防火墙(WAF)**可防护SQL注入攻击。 6. **字符编码问题** 数据库与JSP页面的字符编码不一致(如UTF-8与GBK混用)会导致乱码。需统一设置(如JDBC URL中添加`useUnicode=true&characterEncoding=UTF-8`)。 7. **事务控制** 多条SQL需事务支持时,需手动管理`conn.setAutoCommit(false)`和`commit()`/`rollback()`,遗漏会导致数据不一致。 *示例*: ```java conn.setAutoCommit(false); try { // 执行多条SQL conn.commit(); // 提交事务 } catch (SQLException e) { conn.rollback(); // 回滚 } ```
jsp与数据库交互要学什么
1
回答
jsp
、
数据库
gavin1024
**答案:** 学习JSP与数据库交互需要掌握以下核心内容: 1. **基础技术** - **JSP语法**:理解JSP页面结构(脚本片段、指令、表达式等)。 - **Java基础**:熟悉Java类、对象、异常处理等,因为JSP底层依赖Java。 - **Servlet基础**(可选但推荐):了解Servlet生命周期,常与JSP配合处理业务逻辑。 2. **数据库知识** - **SQL语言**:掌握增删改查(CRUD)操作,如`SELECT`、`INSERT`、`UPDATE`、`DELETE`。 - **数据库基础**:如MySQL/Oracle的表设计、索引、事务等概念。 3. **JDBC(Java Database Connectivity)** - **核心类与接口**:`DriverManager`、`Connection`、`Statement`/`PreparedStatement`、`ResultSet`。 - **连接流程**:加载驱动 → 建立连接 → 执行SQL → 处理结果 → 关闭连接。 - **预编译语句**:优先使用`PreparedStatement`防止SQL注入。 4. **JSP与数据库交互实践** - **直接嵌入JDBC代码**(不推荐但入门常用):在JSP中通过`<% %>`标签编写数据库逻辑。 - **MVC模式改进**:将数据库操作封装到Java类(Model),JSP仅负责显示(View),Servlet处理请求(Controller)。 **举例**: 在JSP中查询MySQL用户表数据: ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/mydb"; Connection conn = DriverManager.getConnection(url, "user", "password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println("用户名: " + rs.getString("username")); } rs.close(); stmt.close(); conn.close(); %> ``` **改进方案**:将数据库操作移到Java类中,JSP通过调用该类获取数据。 **腾讯云相关产品推荐**: - **云数据库MySQL**:提供高性能、高可用的托管数据库服务,简化部署与运维。 - **云服务器CVM**:运行JSP应用的虚拟机环境,可搭配数据库使用。 - **Serverless云函数**(可选):若需无服务架构处理数据库交互逻辑。...
展开详请
赞
0
收藏
0
评论
0
分享
**答案:** 学习JSP与数据库交互需要掌握以下核心内容: 1. **基础技术** - **JSP语法**:理解JSP页面结构(脚本片段、指令、表达式等)。 - **Java基础**:熟悉Java类、对象、异常处理等,因为JSP底层依赖Java。 - **Servlet基础**(可选但推荐):了解Servlet生命周期,常与JSP配合处理业务逻辑。 2. **数据库知识** - **SQL语言**:掌握增删改查(CRUD)操作,如`SELECT`、`INSERT`、`UPDATE`、`DELETE`。 - **数据库基础**:如MySQL/Oracle的表设计、索引、事务等概念。 3. **JDBC(Java Database Connectivity)** - **核心类与接口**:`DriverManager`、`Connection`、`Statement`/`PreparedStatement`、`ResultSet`。 - **连接流程**:加载驱动 → 建立连接 → 执行SQL → 处理结果 → 关闭连接。 - **预编译语句**:优先使用`PreparedStatement`防止SQL注入。 4. **JSP与数据库交互实践** - **直接嵌入JDBC代码**(不推荐但入门常用):在JSP中通过`<% %>`标签编写数据库逻辑。 - **MVC模式改进**:将数据库操作封装到Java类(Model),JSP仅负责显示(View),Servlet处理请求(Controller)。 **举例**: 在JSP中查询MySQL用户表数据: ```jsp <%@ page import="java.sql.*" %> <% String url = "jdbc:mysql://localhost:3306/mydb"; Connection conn = DriverManager.getConnection(url, "user", "password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while(rs.next()) { out.println("用户名: " + rs.getString("username")); } rs.close(); stmt.close(); conn.close(); %> ``` **改进方案**:将数据库操作移到Java类中,JSP通过调用该类获取数据。 **腾讯云相关产品推荐**: - **云数据库MySQL**:提供高性能、高可用的托管数据库服务,简化部署与运维。 - **云服务器CVM**:运行JSP应用的虚拟机环境,可搭配数据库使用。 - **Serverless云函数**(可选):若需无服务架构处理数据库交互逻辑。
jsp为什么连接不上数据库
1
回答
jsp
、
数据库
、
连接
gavin1024
JSP连接不上数据库通常由以下原因导致: 1. **数据库驱动未正确加载** - 问题:JSP页面或Servlet中未导入JDBC驱动,或驱动类名拼写错误。 - 解决:确保将数据库驱动JAR包(如MySQL的`mysql-connector-java.jar`)放入项目的`WEB-INF/lib`目录,并在代码中加载驱动,例如: ```java Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 8.x驱动类 ``` 2. **数据库连接URL错误** - 问题:URL格式不正确(如缺少端口号、数据库名拼写错误)或使用了错误的协议。 - 解决:检查URL格式,例如MySQL的典型URL: ```java String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; ``` 3. **数据库服务未运行** - 问题:MySQL/Oracle等服务未启动,或端口被防火墙拦截。 - 解决:确认数据库服务已启动(如通过`systemctl status mysql`),并检查端口(默认3306)是否开放。 4. **用户名或密码错误** - 问题:连接时使用的数据库账号权限不足或凭证错误。 - 解决:确保账号有访问权限,并在代码中正确填写用户名和密码: ```java String user = "root"; String password = "你的密码"; ``` 5. **网络或权限问题** - 问题:远程数据库未授权当前IP访问,或JSP服务器与数据库不在同一网络。 - 解决:在数据库中授权远程IP(如MySQL执行`GRANT ALL ON *.* TO '用户'@'IP' IDENTIFIED BY '密码';`)。 --- **示例代码(MySQL连接)** ```java <%@ page import="java.sql.*" %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; Connection conn = DriverManager.getConnection(url, "root", "123456"); out.println("连接成功!"); conn.close(); } catch (Exception e) { out.println("连接失败: " + e.getMessage()); } %> ``` --- **腾讯云相关产品推荐** - **数据库服务**:使用[腾讯云数据库MySQL](https://cloud.tencent.com/product/cdb)或[PostgreSQL](https://cloud.tencent.com/product/postgres),提供高可用、自动备份功能,简化运维。 - **云服务器**:部署JSP应用时,选择[腾讯云CVM](https://cloud.tencent.com/product/cvm),搭配弹性公网IP确保网络连通性。 - **连接工具**:通过[腾讯云数据库控制台](https://console.cloud.tencent.com/cdb)直接管理数据库账号和白名单IP。...
展开详请
赞
0
收藏
0
评论
0
分享
JSP连接不上数据库通常由以下原因导致: 1. **数据库驱动未正确加载** - 问题:JSP页面或Servlet中未导入JDBC驱动,或驱动类名拼写错误。 - 解决:确保将数据库驱动JAR包(如MySQL的`mysql-connector-java.jar`)放入项目的`WEB-INF/lib`目录,并在代码中加载驱动,例如: ```java Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 8.x驱动类 ``` 2. **数据库连接URL错误** - 问题:URL格式不正确(如缺少端口号、数据库名拼写错误)或使用了错误的协议。 - 解决:检查URL格式,例如MySQL的典型URL: ```java String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; ``` 3. **数据库服务未运行** - 问题:MySQL/Oracle等服务未启动,或端口被防火墙拦截。 - 解决:确认数据库服务已启动(如通过`systemctl status mysql`),并检查端口(默认3306)是否开放。 4. **用户名或密码错误** - 问题:连接时使用的数据库账号权限不足或凭证错误。 - 解决:确保账号有访问权限,并在代码中正确填写用户名和密码: ```java String user = "root"; String password = "你的密码"; ``` 5. **网络或权限问题** - 问题:远程数据库未授权当前IP访问,或JSP服务器与数据库不在同一网络。 - 解决:在数据库中授权远程IP(如MySQL执行`GRANT ALL ON *.* TO '用户'@'IP' IDENTIFIED BY '密码';`)。 --- **示例代码(MySQL连接)** ```java <%@ page import="java.sql.*" %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; Connection conn = DriverManager.getConnection(url, "root", "123456"); out.println("连接成功!"); conn.close(); } catch (Exception e) { out.println("连接失败: " + e.getMessage()); } %> ``` --- **腾讯云相关产品推荐** - **数据库服务**:使用[腾讯云数据库MySQL](https://cloud.tencent.com/product/cdb)或[PostgreSQL](https://cloud.tencent.com/product/postgres),提供高可用、自动备份功能,简化运维。 - **云服务器**:部署JSP应用时,选择[腾讯云CVM](https://cloud.tencent.com/product/cvm),搭配弹性公网IP确保网络连通性。 - **连接工具**:通过[腾讯云数据库控制台](https://console.cloud.tencent.com/cdb)直接管理数据库账号和白名单IP。
jsp建设网页用什么数据库
0
回答
jsp
、
数据库
gavin1024
抱歉,该回答内容违规,已被管理员封禁
jsp数据库怎么打开
0
回答
jsp
、
数据库
gavin1024
抱歉,该回答内容违规,已被管理员封禁
热门
专栏
漫漫全栈路
134 文章
52 订阅
张善友的专栏
1.7K 文章
140 订阅
QQ音乐技术团队的专栏
149 文章
306 订阅
网络
95 文章
52 订阅
领券