JavaWeb连接数据库实现页面登录、注册和增删改查
登录
在Navicat创建数据库
登录页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/15
-
Time: 11:13
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>登录页面</title>
-
</head>
-
<body>
-
<h2>登录</h2>
-
<form action="login" method="post">
-
账户:<input type="text" name="username" value="" /><br/>
-
密码:<input type="password" name="password" value="" /><br/>
-
<input type="submit" value="登录" />
-
</form>
-
</body>
-
</html>
登陆成功页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/17
-
Time: 20:01
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>主页面</title>
-
</head>
-
<body>
-
<h2>登陆成功!</h2>
-
</body>
-
</html>
登陆失败页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/17
-
Time: 20:00
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>错误</title>
-
</head>
-
<body>
-
<h2>登录失败!</h2>
-
<a href="login.jsp">返回登录</a>
-
</body>
-
</html>
在User类中写入实体、属性、方法
-
package bean;
-
-
public class User {
-
private Integer uid;
-
private String username;
-
private String password;
-
private String phone;
-
private String address;
-
-
public User() {
-
-
}
-
-
public Integer getUid() {
-
return uid;
-
}
-
-
public void setUid(Integer uid) {
-
this.uid = uid;
-
}
-
-
public String getUsername() {
-
return username;
-
}
-
-
public void setUsername(String username) {
-
this.username = username;
-
}
-
-
public String getPassword() {
-
return password;
-
}
-
-
public void setPassword(String password) {
-
this.password = password;
-
}
-
-
public String getPhone() {
-
return phone;
-
}
-
-
public void setPhone(String phone) {
-
this.phone = phone;
-
}
-
-
public String getAddress() {
-
return address;
-
}
-
-
public void setAddress(String address) {
-
this.address = address;
-
}
-
-
-
public String toString() {
-
return "User{"
-
"uid=" uid
-
", username='" username '\''
-
", password='" password '\''
-
", phone='" phone '\''
-
", address='" address '\''
-
'}';
-
}
-
}
UserDaoImpl中写登录和注册的代码
-
package dao;
-
-
import bean.User;
-
import util.JDBCUtil;
-
-
import java.sql.Connection;
-
import java.sql.PreparedStatement;
-
import java.sql.ResultSet;
-
-
public class UserDaoImpl{
-
private Connection con=null;//数据库连接对象
-
private PreparedStatement ps=null;//预处理对象
-
private ResultSet rs=null;//结果集对象
-
private int row=0;//增删改受影响的行数
-
-
User login=null;
-
-
public User login(String username, String password) {
-
try {
-
con= JDBCUtil.getCon();
-
//3.定义sql语句
-
String sql = "select * from t_user where username=? and password=?";
-
//4.获取预处理对象
-
ps = con.prepareStatement(sql);
-
//5.传参
-
ps.setObject(1, username);
-
ps.setObject(2, password);
-
//6.执行sql语句
-
rs = ps.executeQuery();
-
//7.结果集处理
-
if (rs.next()) {
-
login=new User();
-
//从结果集获取数据 ,封装到实体类对象中
-
int uid=rs.getInt("uid");
-
login.setUid(uid);
-
login.setUsername(rs.getString("username"));
-
login.setPassword(rs.getString("password"));
-
login.setPhone(rs.getString("phone"));
-
login.setAddress(rs.getString("address"));
-
}
-
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
JDBCUtil.close(rs,ps,con);
-
}
-
return login;
-
}
-
-
-
public int register(User user) {
-
try {
-
//1.获取数据库连接
-
con= JDBCUtil.getCon();
-
//2.定义sql语句
-
String sql="insert into t_user(username,password,phone,address) values(?,?,?,?)";
-
//3.获取预处理对象
-
ps=con.prepareStatement(sql);
-
//4.传参
-
ps.setObject(1,user.getUsername());
-
ps.setObject(2,user.getPassword());
-
ps.setObject(3,user.getPhone());
-
ps.setObject(4,user.getAddress());
-
//5.执行sql
-
row=ps.executeUpdate();
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
JDBCUtil.close(ps,con);
-
}
-
return row;
-
}
-
}
JDBCUtil关闭数据库的媒介
-
package util;
-
-
import java.sql.Connection;
-
import java.sql.DriverManager;
-
import java.sql.PreparedStatement;
-
import java.sql.ResultSet;
-
-
public class JDBCUtil {
-
private static String driver="com.mysql.cj.jdbc.Driver";
-
private static String url="jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
-
private static String user="root";
-
private static String password="root";
-
private static Connection con=null;
-
private static PreparedStatement ps=null;
-
private static ResultSet rs=null;
-
-
public static Connection getCon(){
-
try {
-
//1.加载数据库驱动
-
Class.forName(driver);
-
//2.获取数据库连接对象
-
con= DriverManager.getConnection(url,user,password);
-
-
}catch (Exception e){
-
e.printStackTrace();
-
}
-
return con;
-
}
-
-
public static void close(ResultSet rs,PreparedStatement ps,Connection con){
-
try {
-
if (rs!=null){
-
rs.close();
-
}
-
if (ps!=null){
-
ps.close();
-
}
-
if (con!=null){
-
con.close();
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}
-
}
-
-
public static void close(PreparedStatement ps,Connection con){
-
try {
-
if (ps!=null){
-
ps.close();
-
}
-
if (con!=null){
-
con.close();
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}
-
}
-
}
在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-name>login</servlet-name>
-
<servlet-class>Zuoye.Login</servlet-class>
-
</servlet>
-
<servlet-mapping>
-
<servlet-name>login</servlet-name>
-
<url-pattern>/login</url-pattern>
-
</servlet-mapping>
-
</web-app>
在Login类中连接数据库
-
package Zuoye;
-
-
import bean.User;
-
-
import javax.servlet.ServletException;
-
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.DriverManager;
-
import java.sql.PreparedStatement;
-
import java.sql.ResultSet;
-
-
public class Login extends HttpServlet {
-
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
doPost(req,resp);
-
}
-
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
//设置请求和响应的编码
-
req.setCharacterEncoding("utf-8");//设置请求的编码
-
resp.setCharacterEncoding("utf-8");//设置响应的编码
-
resp.setContentType("text/html;charset=utf-8");//设置响应的文本格式和编码
-
-
//获取请求参数
-
String username = req.getParameter("username");
-
String password = req.getParameter("password");
-
-
//业务处理--JDBC操作
-
Connection con=null;//数据库连接对象
-
PreparedStatement pstm=null;//预处理对象
-
ResultSet rs=null;//结果集
-
User login=null;
-
try {
-
//加载驱动包
-
Class.forName("com.mysql.cj.jdbc.Driver");
-
//获取数据库连接对象
-
con= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
-
//定义sql语句
-
String sql="select * from t_user where username=? and password=?";
-
//获取预处理对象
-
pstm = con.prepareStatement(sql);
-
//传参
-
pstm.setObject(1,username);
-
pstm.setObject(2,password);
-
//执行SQL
-
rs=pstm.executeQuery();
-
//结果集处理
-
if (rs.next()){
-
login=new User();
-
//结果集中获取数据,封装到实体类对象中
-
int uid = rs.getInt("uid");
-
login.setUid(uid);
-
login.setUsername(rs.getString("username"));
-
login.setPassword(rs.getString("password"));
-
login.setPhone(rs.getString("phone"));
-
login.setAddress(rs.getString("address"));
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
//关闭资源
-
try {
-
if (rs!=null){
-
rs.close();
-
}
-
if (pstm!=null){
-
pstm.close();
-
}
-
if (con!=null){
-
con.close();
-
}
-
}catch (Exception e){
-
e.printStackTrace();
-
}
-
}
-
//判断登录的用户信息是否为空
-
if (login!=null){
-
//登陆成功 跳转到主页
-
resp.sendRedirect("zhuye.jsp");
-
}else{
-
//登陆失败 跳转到错误页面
-
resp.sendRedirect("error.jsp");
-
}
-
}
-
}
注册
页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/18
-
Time: 16:55
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>注册页面</title>
-
</head>
-
<body>
-
<h1>进行注册</h1>
-
<form action="register" method="post">
-
账号:<input type="text" name="username" value="" /><br/>
-
密码:<input type="password" name="password" value="" /><br/>
-
电话:<input type="text" name="phone" value="" /><br/>
-
地址:<input type="text" name="address" value="" /><br/>
-
<input type="submit" value="注册">
-
<a href="login.jsp">已有账号,去登录</a>
-
</form>
-
</body>
-
</html>
运行的代码
-
package servlet;
-
-
import bean.User;
-
import dao.UserDaoImpl;
-
-
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;
-
-
-
public class Register extends HttpServlet {
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
doPost(req, resp);
-
}
-
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
//设置请求和响应的编码
-
req.setCharacterEncoding("utf-8"); //设置请求的编码
-
resp.setCharacterEncoding("utf-8"); //设置响应的编码
-
-
//获取请求参数
-
String username = req.getParameter("username");
-
String password = req.getParameter("password");
-
String phone = req.getParameter("phone");
-
String address = req.getParameter("address");
-
//封装到User对象中
-
User user = new User();
-
user.setUsername(username);
-
user.setPassword(password);
-
user.setPhone(phone);
-
user.setAddress(address);
-
-
System.out.println(user);
-
-
//JDBC操作
-
UserDaoImpl userDao = new UserDaoImpl();
-
int row = userDao.register(user);
-
-
//做出响应
-
if (row > 0) {
-
//注册成功
-
resp.sendRedirect("login.jsp");
-
} else {
-
//注册失败
-
resp.sendRedirect("register.jsp");
-
}
-
}
-
}
将数据库显示到页面
后台获取数据
-
HttpSession session=request.getSession();
-
session.setAttribute("goodsList",goodsList);
导入jstl核心类库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
通过el表达式展示
-
<h2>欢迎来到${user.address}的${user.username}的页面!</h2>
-
<table>
-
<tr>
-
<th>商品编号</th>
-
<th>商品名称</th>
-
<th>商品价格</th>
-
<th>商品说明</th>
-
</tr>
-
<c:forEach items="${goodsList}" var="goods">
-
<tr>
-
<td>${goods.gid}</td>
-
<td>${goods.gname}</td>
-
<td>${goods.price}</td>
-
<td>${goods.mark}</td>
-
</tr>
-
</c:forEach>
-
</table>
新增数据
添加页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/15
-
Time: 11:13
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>商品信息添加</title>
-
</head>
-
<body>
-
<h2>商品信息录入</h2>
-
<form action="addGoods" method="post">
-
商品名称: <input type="text" name="gname" value="" /><br/>
-
商品价格: <input type="number" step="0.01" name="price" value="" /><br/>
-
商品说明: <input type="text" name="mark" value="" /> <br/>
-
<input type="submit" value="提交">
-
</form>
-
</body>
-
</html>
在GoodsDao中写入add方法
-
public int add(Goods goods) {
-
try {
-
//1.获取数据库连接
-
con= JDBCUtil.getCon();
-
//2.定义sql语句
-
String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
-
//3.获取预处理对象
-
ps=con.prepareStatement(sql);
-
//4.传参
-
ps.setObject(1,goods.getGname());
-
ps.setObject(2,goods.getPrice());
-
ps.setObject(3,goods.getMark());
-
//5.执行sql
-
row=ps.executeUpdate();
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
JDBCUtil.close(rs,ps,con);
-
}
-
return row;
-
}
添加的运行代码
-
package servlet;
-
-
import bean.Goods;
-
import dao.GoodsDao;
-
-
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;
-
-
-
public class AddGoods extends HttpServlet {
-
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
super.doGet(req, resp);
-
}
-
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
req.setCharacterEncoding("utf-8");
-
resp.setCharacterEncoding("utf-8");
-
-
Goods goods=new Goods();
-
goods.setGname(req .getParameter("gname"));
-
goods.setPrice(Double.parseDouble(req.getParameter("price"))); //获欧字符中数字转换double数据
-
goods.setMark(req.getParameter("mark"));
-
-
GoodsDao goodsDao=new GoodsDao();
-
int row = goodsDao.add(goods);
-
// System.out.println(row);
-
if(row>0) {
-
req.getRequestDispatcher("SelectAllGodds").forward(req, resp);
-
}else{
-
// req.setAttribute("error_msg","添加商品信息失败!");
-
req.getRequestDispatcher("error.jsp").forward(req,resp);
-
}
-
}
-
}
删除数据
在主页面添加删除标签
在GoodsDao中写入deleteById方法
-
public int deleteById(int gid) {
-
try {
-
//1.获取数据库连接
-
con= JDBCUtil.getCon();
-
//2.定义sql语句
-
String sql="delete from t_goods where gid=?";
-
//3.获取预处理对象
-
ps=con.prepareStatement(sql);
-
//4.传参
-
ps.setObject(1,gid);
-
//5.执行sql
-
row=ps.executeUpdate();
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
JDBCUtil.close(rs,ps,con);
-
}
-
return row;
-
}
-
}
删除的运行代码
-
package servlet;
-
-
import dao.GoodsDao;
-
-
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;
-
-
-
public class DelGoods extends HttpServlet {
-
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
doPost(req,resp);
-
}
-
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
int gid=Integer.parseInt(req.getParameter("gid"));
-
//根id执行数据库的删除
-
GoodsDao goodsDao=new GoodsDao() ;
-
int row = goodsDao.deleteById(gid);
-
if(row>0) {
-
//请求转发,查询所有商品信息(刷新)
-
req.getRequestDispatcher("SelectAllGodds").forward(req,resp);
-
} else{
-
req.setAttribute("error_msg","删除出现了问题!");
-
req.getRequestDispatcher("error.jsp").forward(req,resp);
-
}
-
}
-
}
修改数据
在主页面添加修改标签属性
修改页面
-
<%--
-
Created by IntelliJ IDEA.
-
User: Lenovo
-
Date: 2023/2/15
-
Time: 11:13
-
To change this template use File | Settings | File Templates.
-
--%>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
<html>
-
<head>
-
<title>商品信息修改</title>
-
</head>
-
<body>
-
<h2>商品信息修改</h2>
-
<form action="UpdateGoods" method="post">
-
商品编号: <input type="text" name="gid" value="${goods.gid}" readonly="readonly" placeholder="商品编号"/><br/>
-
商品名称: <input type="text" name="gname" value="${goods.gname}" placeholder="商品名称" /><br/>
-
商品价格: <input type="number" step="0.01" name="price" value="${goods.price}" placeholder="商品价格"/><br/>
-
商品说明: <input type="text" name="mark" value="${goods.mark}" placeholder="商品说明"/> <br/>
-
<input type="submit" value="修改">
-
</form>
-
</body>
-
</html>
获取数据库操作
-
public Goods selectById(int gid) {
-
Goods goods=new Goods();
-
List<Goods> goodslist=new ArrayList<>();
-
try {
-
con = JDBCUtil.getCon();
-
String sql = "select * from t_goods where gid=?";
-
ps = con.prepareStatement(sql);
-
ps.setObject(1,gid);
-
rs = ps.executeQuery();
-
while (rs.next()) {
-
//把当前数据行中的数据取出来,存储到Goods对象中
-
goods.setGid(rs.getInt("gid"));
-
goods.setGname(rs.getString("gname"));
-
goods.setPrice(rs.getDouble("price"));
-
goods.setMark(rs.getString("mark"));
-
//把Goods对象存储到集合中
-
goodslist.add(goods);
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
try{
-
if(rs!=null) {
-
rs.close();
-
}
-
if(ps!=null) {
-
ps.close();
-
}
-
if(con!=null){
-
con.close();
-
}
-
} catch (Exception e){
-
e.printStackTrace();
-
}
-
}
-
return goods;
-
}
存入request域中
-
package servlet;
-
-
import bean.Goods;
-
import dao.GoodsDao;
-
-
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;
-
-
-
public class FindByid extends HttpServlet {
-
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
doPost(req, resp);
-
}
-
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
int gid=Integer.parseInt(req.getParameter("gid"));
-
//根据gid查询商品信息
-
GoodsDao goodsDao=new GoodsDao();
-
Goods goods=goodsDao.selectById(gid);
-
System.out.println(goods);
-
if(goods!=null){
-
//查询商品信息成功,在入request城中,然后请求转发到页面展示数据
-
req.setAttribute("goods",goods);
-
req.getRequestDispatcher("showGoods.jsp").forward(req,resp);
-
}else {
-
req.setAttribute("error_msg","修改出了异常!");
-
req.getRequestDispatcher("error.jsp").forward(req,resp);
-
}
-
}
-
}
修改数据的数据库操作
-
public int upda(Goods goods){
-
try {
-
con= JDBCUtil.getCon();
-
//编写sql语句
-
String sql="update t_goods set gname=?,price=?,mark=? where gid=?";
-
//获取预处理对象
-
ps = con.prepareStatement(sql);
-
//传参
-
ps.setObject(1,goods.getGname());
-
ps.setObject(2,goods.getPrice());
-
ps.setObject(3,goods.getMark());
-
ps.setObject(4,goods.getGid());
-
//执行sql语句
-
row= ps.executeUpdate();
-
-
}catch (Exception e){
-
e.printStackTrace();
-
}finally {
-
JDBCUtil.close(ps,con);
-
}
-
return row;
-
}
点击修改后跳转到后台请求
-
package servlet;
-
-
-
import bean.Goods;
-
import dao.GoodsDao;
-
-
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;
-
-
-
public class UpdateGoods extends HttpServlet {
-
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
doPost(req, resp);
-
}
-
-
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
req.setCharacterEncoding("utf-8");
-
resp.setCharacterEncoding("utf-8");
-
-
//获取表单提交的数据,封装到qods对象中
-
Goods goods=new Goods();
-
goods.setGid(Integer.parseInt(req.getParameter("gid")));
-
goods.setGname(req.getParameter("gname"));
-
goods.setPrice(Double.parseDouble(req.getParameter( "price")));
-
goods.setMark(req.getParameter("mark"));
-
-
System.out.println(goods);
-
-
//执行数据库JDBC的修改操作
-
GoodsDao goodsDao=new GoodsDao();
-
int row=goodsDao.upda(goods);
-
-
if(row>0){
-
req.getRequestDispatcher("SelectAllGodds").forward(req,resp);
-
}else {
-
req.setAttribute("error_msg","修改出了异常");
-
req.getRequestDispatcher("error.jsp").forward(req,resp);
-
}
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfafkf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01