package com.lrp.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
public Connection getConnection() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","123456");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
protected void closeAll(Connection con,PreparedStatement ps,ResultSet rs){
try {
if(rs != null)
rs.close();
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


package com.lrp.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.lrp.entity.Email;
public class EmailDao extends BaseDao {
public List<Email> getAll(String uname) {
List<Email> list = new ArrayList<Email>();
Connection con = getConnection();
PreparedStatement pred = null;
ResultSet resultSet = null;
String sql = "select * from email where sjr=?";
try {
pred = con.prepareStatement(sql);
pred.setString(1, uname);
resultSet = pred.executeQuery();
while (resultSet.next()) {
Email email = new Email();
email.setId(resultSet.getInt(1));
email.setFjr(resultSet.getString(2));
email.setSjr(resultSet.getString(3));
email.setTitle(resultSet.getString(4));
email.setContent(resultSet.getString(5));
email.setTime(resultSet.getDate(6));
email.setZt(resultSet.getInt(7));
list.add(email);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(con, pred, resultSet);
}
return list;
}
public void addEmail(Email e) {
Connection con = getConnection();
String sql = "insert into email(fjr,sjr,title,content,time,zt) values(?,?,?,?,?,0)";
PreparedStatement pred = null;
try {
pred = con.prepareStatement(sql);
pred.setString(1, e.getFjr());
pred.setString(2, e.getSjr());
pred.setString(3, e.getTitle());
pred.setString(4, e.getContent());
pred.setDate(5, new java.sql.Date(new Date().getTime()));
pred.executeUpdate();
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
closeAll(con, pred, null);
}
}
public void del(int id) {
Connection con = getConnection();
String sql = "delete from email where id=?";
PreparedStatement pred = null;
try {
pred = con.prepareStatement(sql);
pred.setInt(1, id);
pred.executeUpdate();
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
closeAll(con, pred, null);
}
}
public void update(int id) {
Connection con = getConnection();
String sql = "update email set zt=1 where id=?";
PreparedStatement pred = null;
try {
pred = con.prepareStatement(sql);
pred.setInt(1, id);
pred.executeUpdate();
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
closeAll(con, pred, null);
}
}
public Email look(int id) {
Connection con = getConnection();
String sql = "select id,fjr,sjr,title,content,time from email where id=?";
PreparedStatement pred = null;
ResultSet resultSet = null;
try {
pred = con.prepareStatement(sql);
pred.setInt(1, id);
resultSet = pred.executeQuery();
while (resultSet.next()) {
Email email = new Email();
email.setId(resultSet.getInt(1));
email.setFjr(resultSet.getString(2));
email.setSjr(resultSet.getString(3));
email.setTitle(resultSet.getString(4));
email.setContent(resultSet.getString(5));
email.setTime(resultSet.getDate(6));
return email;
}
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
closeAll(con, pred, resultSet);
}
return null;
}
}




package com.lrp.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao extends BaseDao{
public int Register(String uname,String password){
int i=-1;
PreparedStatement pred=null;
Connection con=getConnection();
String sql="insert into users(uname,password)values(?,?)";
try {
pred= con.prepareStatement(sql);
pred.setString(1, uname);
pred.setString(2, password);
i=pred.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(con, pred, null);
}
return i;
}
public boolean Login(String uname,String password){
boolean f=false;
PreparedStatement pred=null;
ResultSet resultSet=null;
Connection con=getConnection();
String sql="select * from users where uname=? and password=?";
try {
pred=con.prepareStatement(sql);
pred.setString(1, uname);
pred.setString(2, password);
resultSet=pred.executeQuery();
while(resultSet.next()){
f=true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(con, pred, resultSet);
}
return f;
}
}




package com.lrp.entity;
import java.util.Date;
public class Email {
private Integer id;
private String fjr;
private String sjr;
private String title;
private Date time;
private Integer zt;
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFjr() {
return fjr;
}
public void setFjr(String fjr) {
this.fjr = fjr;
}
public String getSjr() {
return sjr;
}
public void setSjr(String sjr) {
this.sjr = sjr;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public Integer getZt() {
return zt;
}
public void setZt(Integer zt) {
this.zt = zt;
}
public Email() {
super();
}
public Email(Integer id, String fjr, String sjr, String title, Date time,
Integer zt, String content) {
super();
this.id = id;
this.fjr = fjr;
this.sjr = sjr;
this.title = title;
this.time = time;
this.zt = zt;
this.content = content;
}
}


package com.lrp.entity;
public class User {
private Integer id;
private String uname;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
super();
}
public User(Integer id, String uname, String password) {
super();
this.id = id;
this.uname = uname;
this.password = password;
}
}


package com.lrp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 com.lrp.dao.EmailDao;
@WebServlet("/dodel.do")
public class DoDel extends HttpServlet {
/**
* Constructor of the object.
*/
public DoDel() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html,charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
EmailDao e=new EmailDao();
String id=request.getParameter("id");
int idd=Integer.parseInt(id);
e.del(idd);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}




package com.lrp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.jms.Session;
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 javax.servlet.http.HttpSession;
import com.lrp.dao.UserDao;
@WebServlet("/dologin.do")
public class DoLogin extends HttpServlet {
/**
* Constructor of the object.
*/
public DoLogin() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html,charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String uname = request.getParameter("uname");
String password = request.getParameter("password");
UserDao ud = new UserDao();
HttpSession session = request.getSession();
PrintWriter out = response.getWriter();
if (ud.Login(uname, password)) {
session.setAttribute("uname", uname);
request.getRequestDispatcher("main.jsp").forward(request, response);
} else {
out.print("登录失败,即将跳回登录页.....");
response.setHeader("refresh", "2;url=Login.jsp");
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}




package com.lrp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import com.lrp.dao.EmailDao;
import com.lrp.entity.Email;
@WebServlet("/dolook.do")
public class DoLook extends HttpServlet {
/**
* Constructor of the object.
*/
public DoLook() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html,charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
int idd = Integer.parseInt(id);
EmailDao e = new EmailDao();
e.update(idd);
Email email = e.look(idd);
HttpSession session=request.getSession();
session.setAttribute("email", email);
request.getRequestDispatcher("look.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}




package com.lrp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 com.lrp.dao.UserDao;
@WebServlet("/doregister.do")
public class DoRegister extends HttpServlet {
/**
* Constructor of the object.
*/
public DoRegister() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html,charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String uname = request.getParameter("uname");
String password = request.getParameter("password");
UserDao ud = new UserDao();
int i=ud.Register(uname, password);
PrintWriter out=response.getWriter();
if(i>0){
out.print("注册成功,即将调到登录页.....");
response.setHeader("refresh", "2;url=Login.jsp");
}else{
out.print("注册失败,即将调到注册页.....");
response.setHeader("refresh", "2;url=register.jsp");
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}




package com.lrp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import com.lrp.dao.EmailDao;
import com.lrp.entity.Email;
@WebServlet("/dowrite.do")
public class DoWrite extends HttpServlet {
/**
* Constructor of the object.
*/
public DoWrite() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html,charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Email e=new Email();
HttpSession session=request.getSession();
String fjr=(String)session.getAttribute("uname");
e.setFjr(fjr);
String sjr=request.getParameter("sjr");
e.setSjr(sjr);
String title=request.getParameter("title");
e.setTitle(title);
String content=request.getParameter("content");
e.setContent(content);
EmailDao ed=new EmailDao();
ed.addEmail(e);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}


<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML >
<html>
<head>
<title>My JSP 'exit.jsp' starting page</title>
</head>
<body>
<%session.invalidate();
response.sendRedirect("Login.jsp");
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
</body>
</html>
<%@page import="com.lrp.dao.UserDao"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title></title>
</head>
<body>
<h1>登录</h1>
<script>
function yz() {
if (form.uname.value == null) {
alert('用户名不能为空');
return;
}
if (form.password.value == null) {
alert('密码不能为空');
return;
}
if (form.uname.value != null && form.password.value != null) {
form.submit();
}
}
</script>
<form action="dologin.do" method="post" name="form">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="uname"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="button" value="登录" onclick="yz()"></td>
<td><a href="register.jsp">注册</a></td>
</tr>
</table>
</form>
</body>
</html>
<%@page import="com.lrp.dao.EmailDao"%>
<%@page import="com.lrp.entity.Email"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>My JSP 'write.jsp' starting page</title>
</head>
<body>
<%
Email email=(Email)session.getAttribute("email");
%>
<table>
<tr>
<td>发件人:</td>
<td><input type="text" name="fjr" style="border: none"
value="<%=email.getFjr()%>">
</td>
</tr>
<tr>
<td>主题:</td>
<td><input type="text" name="title" style="border: none"
value="<%=email.getTitle()%>">
</td>
</tr>
<tr>
<td>时间:</td>
<td><input type="date" name="time" style="border: none"
value="<%=email.getTime()%>">
</td>
</tr>
<tr>
<td>收件人:</td>
<td><input type="text" name="sjr" style="border: none"
value="<%=email.getSjr()%>">
</td>
</tr>
<tr>
<td>内容:</td>
<td><div style="border: none;outline: none;overflow: inherit;">
<%=email.getContent()%></div>
</td>
</tr>
</table>
<a href="main.jsp">返回</a>
</body>
</html>


<%@page import="com.lrp.entity.Email"%>
<%@page import="com.lrp.dao.EmailDao"%>
<%@page import="com.lrp.dao.UserDao"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title></title>
</head>
<body>
<%
String uname = (String) session.getAttribute("uname");
EmailDao dao = new EmailDao();
List<Email> list = dao.getAll(uname);
%>
欢迎<%=uname%>
<a href="write1.jsp">写邮件</a>
<a href="exit.jsp">退出登录</a>
<br>
<br>
<table border="1px" cellspacing="0" cellpadding="30px">
<thead></thead>
<tr>
<th>发件人</th>
<th>标题</th>
<th>时间</th>
<th>状态</th>
<th>操作</th>
<th>操作</th>
</tr>
<tbody></tbody>
<%
for (int i = 0; i < list.size(); i++) {
%>
<tr>
<td>
<%
out.print(list.get(i).getFjr().toString());
%>
</td>
<td>
<a href="dolook.do?id=<%=list.get(i).getId() %>"><%
out.print(list.get(i).getTitle().toString());
%></a>
</td>
<td>
<%
out.print(list.get(i).getTime().toString());
%>
</td>
<td>
<%
if (list.get(i).getZt() == 0) {
out.print("<img src='img/w.png'></img>");
} else {
out.print("<img src='img/y.png'></img>");
}
%>
</td>
<td><a href="write.jsp?uname=<%=list.get(i).getFjr()%>">回复</a></td>
<td><a href="dodel.do?id=<%=list.get(i).getId()%>">删除</a></td>
</tr>
<%
}
%>
</table>
</body>
</html>


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">
<title>注册</title>
</head>
<body>
<h1>注册</h1>
<script>
function yz() {
if (form.uname.value == "") {
alert('用户名不能为空');
return;
}
if (form.password.value == "") {
alert('密码不能为空');
return;
}
form.submit();
}
</script>
<form action="doregister.do" method="post" name="form">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="uname">
</td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password">
</td>
</tr>
<tr>
<td><input type="button" value="注册" onclick="yz()">
</td>
<td><a href="Login.jsp">登录</a>
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>My JSP 'write.jsp' starting page</title>
</head>
<body>
<form action="dowrite.do" method="post" name="form">
<table>
<tr>
<td>收件人</td>
<td><input type="text" name="sjr" value="<%=request.getParameter("uname") %>">
</td>
</tr>
<tr>
<td>主题</td>
<td><input type="text" name="title">
</td>
</tr>
<tr>
<td>内容</td>
<td><textarea rows="6" cols="20" name="content"></textarea>
</td>
</tr>
<tr>
<td><input type="submit" value="发送">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>My JSP 'write.jsp' starting page</title>
</head>
<body>
<form action="dowrite.do" method="post" name="form">
<table>
<tr>
<td>收件人</td>
<td><input type="text" name="sjr">
</td>
</tr>
<tr>
<td>主题</td>
<td><input type="text" name="title">
</td>
</tr>
<tr>
<td>内容</td>
<td><textarea rows="6" cols="20" name="content"></textarea>
</td>
</tr>
<tr>
<td><input type="submit" value="发送">
</td>
</tr>
</table>
</form>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY