部署EJB成功,启动服务器也可以了,运行客户端程序出错!

hzhstar 2003-10-20 09:24:48
客户端
运行后:
D:\bea\jdk141_03\bin\javaw -classpath "D:\Documents and Settings\star\jbproject\demo1\classes;D:\bea\weblogic81\server\lib\weblogic_sp.jar;D:\bea\weblogic81\server\lib\weblogic.jar;D:\bea\weblogic81\server\lib\webservices.jar;D:\bea\jdk141_03\jre\lib\charsets.jar;D:\bea\jdk141_03\jre\lib\ext\dnsns.jar;D:\bea\jdk141_03\jre\lib\ext\ldapsec.jar;D:\bea\jdk141_03\jre\lib\ext\localedata.jar;D:\bea\jdk141_03\jre\lib\ext\sunjce_provider.jar;D:\bea\jdk141_03\jre\lib\im\indicim.jar;D:\bea\jdk141_03\jre\lib\jaws.jar;D:\bea\jdk141_03\jre\lib\jce.jar;D:\bea\jdk141_03\jre\lib\jsse.jar;D:\bea\jdk141_03\jre\lib\rt.jar;D:\bea\jdk141_03\jre\lib\sunrsasign.jar;D:\bea\jdk141_03\lib\dt.jar;D:\bea\jdk141_03\lib\tools.jar;D:\bea\jdk141_03\lib\htmlconverter.jar" demo1.aa
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at demo1.aa.main(aa.java:11)
Exception in thread "main"


客户端程序如下:
package demo1;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;

public class aa{
//public String dd="";
public static void main(String[] args)throws Exception{
Properties props =System.getProperties();
Context ctx=new InitialContext(props);
Object obj=ctx.lookup("Enterprise1Home");
Enterprise1Home home=(Enterprise1Home)javax.rmi.PortableRemoteObject.narrow(obj,Enterprise1Home.class);
Enterprise1 hello=home.create();
// dd=hello.helloworld("a");
System.out.println(hello.helloworld("aa"));
hello.remove();
}
}
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhstar 2003-10-20
  • 打赏
  • 举报
回复
谢谢各位大哥!
我没用oracle呀或什么数据库,都没有!
只是用jb中新建/文件/ejb客户端,然后再输入下面的东西呀!
cootme2002 2003-10-20
  • 打赏
  • 举报
回复
你这个是否有DB的操作啊?

不过根据我的经验来看,应该与你工作的路径有关。

要是使用Oracle的话,你应该把环境变量的tmp/temp设置为不带有空格的路径。
因为oracle不认识带有空格的路径。

还有你的工程最好也不要保存在有空格的路径中。

我们一道学习、探讨吧。
有问题请给我留言,可以到 http://www.redrival.com/cootme 的 COOTME留言版 给我留言探讨。
RobertDeNiro 2003-10-20
  • 打赏
  • 举报
回复
如果是单独的测试的话(看到你的main方法了),当然要把wlclient.jar加入classpath,不然会提示找不到类,如果是web中调用的话,就不用加了。
hzhstar 2003-10-20
  • 打赏
  • 举报
回复
不好意思,
我是用jb9+weblogic8的,
还要设置环境变量吗?

另外\server\lib\wlclient.jar这个jar包要加在classpath下?????????
RobertDeNiro 2003-10-20
  • 打赏
  • 举报
回复
...
Properties props =System.getProperties();
props.put(
Context.INITIAL_CONTEXT_FACTORY
"weblogic.jndi.WLInitialContextFactory");
props.put(
Context.PROVIDER_URL
"t3://127.0.0.1:7001");
Context ctx=new InitialContext(props);
...
另外\server\lib\wlclient.jar这个jar包要加在classpath下
yohar 2003-10-20
  • 打赏
  • 举报
回复
RobertDeNiro()说得对,你安他那个试试,你只要在jbuild中加入相关类就可以了,可以不设classpath
目录 序: 1 面向Internet的编程 1 Mary的加盟 2 The J2EE Tutorial 2 目录 3 第一部分 介绍 13 准备工作 13 谁应该使用这指南 13 关于例子 13 理解例子的准备工作 13 例子下载 13 如何编译并运行例子 13 相关信息 14 第1章 总 括 14 一.分布式得多层应用程序 14 J2EE组件 15 J2EE客户端 15 网络浏览器 15 小程序 15 应用客户端 15 JavaBean组件结构 15 网络组件 15 业务逻辑组件 16 二.J2EE容器 16 容器服务 16 三.打包J2EE组件 18 四.开发者角色 18 J2EE产品提供商 18 工具提供商 19 应用程序组件开发者 19 企业Bean开发者 19 Web组件开发者 19 J2EE应用程序客户端开发者 19 应用程序组装者 19 应用程序部署者和系统管理员 19 五.本书所用的软件 20 数据库访问 20 J2EE API 20 简化系统集成 20 工具 20 第2章 动手做一个EJB 22 一.准备工作 23 二.创建J2EE应用程序 24 三.创建企业Bean 24 编写企业Bean代码 24 编写Remote接口 24 编写Home接口 24 编写企业Bean类 25 编译源文件 26 打包企业Bean 26 四.创建J2EE应用程序客户端 27 编写J2EE应用程序客户端代码 27 查找Home接口 27 创建一个企业Bean实例 28 调用商业方法 28 打包J2EE应用程序客户端 29 指定应用程序客户端的企业Bean引用 30 五.创建Web客户端 30 编写Web客户端代码 30 编译Web客户端 32 打包Web客户端 32 指定Web客户端的企业Bean引用 32 六.设置企业Bean的JNDI名 32 七.部署J2EE应用程序 33 八.运行J2EE应用程序客户端 34 九.运行Web客户端 34 十.修改J2EE应用程序 35 修改类文件 35 添加文件 36 修改部署设置 36 十一 常见问题和解决方法 36 无法启动J2EE服务器 36 编译出错 37 部署出错 37 J2EE应用程序客户端运行时错误 38 Web客户端运行时错误 39 用检验工具检查问题 39 比较你的EAR文件和样本EAR文件 39 其它异常 39 第二部分 EJB技术 40 第3章 企业Bean 40 1,企业Bean概述 41 企业Bean的优点 41 何时需要使用企业Bean 41 企业Bean的分类 41 2,会话Bean 42 状态管理模式 42 何时需要会话Bean 42 3,EntityBean 43 EntityBean和会话Bean的不同之处 43 容器管理的持久性(CMP) 44 何时需要EntityBean 45 4,Message-Driven Bean 46 Message-DrivenBean的构造 46 与会话Bean、EntityBean的不同之处 46 何时需要Message-DrivenBean 47 5.定义客户端访问接口 47 远程访问 47 本地接口 48 Local接口和CMR(Container-Managed RelationShips) 49 两种访问方式的抉择 49 性能和访问方式 50 方法参数和访问方式 50 数据访问粒度 50 6,企业Bean的“内容” 51 7,企业Bean的命名约定 51 8,企业Bean的生存周期 52 有状态会话Bean的生命周期: 52 无状态会话Bean的生命周期 54 EntityBean的生命周期 54 Message-DrivenBean的生命周期 56 第4章 有状态会话Bean示例 57 1.购物车会话Bean CartEJB 57 会话Bean类 58 SessionBean接口 60 Home接口 62 Remote接口 63 辅助类 63 运行本例 63 二 其他的企业Bean特性 64 访问环境变量 65 企业Bean的比较 66 访问企业Bean的远程对象引用 67 第5章 BMP的例子 68 一.SavingsAccountEJB 68 实体Bean类(SavingsAccountBean) 69 EntityBean接口 69 ejbCreate方法 70 EjbPostCreate方法 71 ejbRemove方法 72 ejbLoad和ejbStore方法 72 查找方法(Finder) 73 商业方法 74 Home方法 76 数据库访问 77 Home接口 77 定义create方法 78 定义查找方法 78 定义Home方法 79 运行本例子 80 二.用deploytool部署BMP实现的实体Bean 80 三.为BMP映射表间关系 81 一对一关系 81 运行StorageBinApp应用程序 83 一对多关系 84 将子表实现为辅助类 84 运行OrderEJB应用程序 87 将子表实现为实体Bean 87 运行SalesRepEJB的例子 90 多对多关系 90 运行EnrollerEJB的例子 91 四.BMP的主键 92 主键类 92 实体Bean类中的主键 93 获取主键 94 五.异常处理 94 第6章 CMP的例子 96 一 RosterApp应用概述 97 二 layerEJB代码分析 97 实体Bean类 98 CMP和BMP实现实体Bean的代码比较 98 访问(get和set)方法 98 持久性字段的访问方法 99 关系字段的访问方法 99 select方法 99 商业方法 100 实体Bean方法 100 Local Home接口 101 Local接口 102 三.RosterApp配置说明 102 RosterApp应用程序配置 103 RosterClient客户端配置 104 RosterJAR的设置 104 TeamJAR配置 104 PlayerEJB 107 四 RosterApp中的方法调用 110 “新建”一个运动员 110 将运动员加入组 111 “删除”一个运动员 112 从组中开除运动员 112 获得一个组里的所有运动员 113 获取组成员的副本 114 根据位置查询运动员 116 查询运动员的运动项目 116 五 运行RosterApp应用程序 118 启动用到的软件 118 部署该应用程序 118 运行客户端 118 六 用deploytool工具部署CMP实现的实体Bean 118 指定企业Bean类型 118 选择持久性字段和抽象模式名 119 为查找方法和Select方法定义EJB QL查询 119 七 CMP的主键 119 主键类 119 实体Bean类中的主键 120 产生主键值 121 第7章 一个消息驱动Bean的例子 122 一.例子应用程序介绍 122 二.J2EE应用程序客户端 123 三.消息驱动Bean类 124 OnMessage方法 124 ejbCreate和ejbRemove方法 125 四.运行本例子 125 启动J2EE服务器 125 创建消息队列 125 部署该程序 125 运行客户端 125 五.用deploytool部署消息驱动Bean 126 指定Bean类型和事务管理机制 126 设置消息驱动Bean的特有属性 126 六.用deploytool配置JMS客户端 127 配置资源引用 127 配置资源环境引用 128 设置JNDI名 128 第8章 EJB查询语言 129 一.术语 129 二.简单语法 130 三.查询例子 130 简单查找方法的查询 130 跨越实体Bean关系查找方法的查询(关联查询) 131 其它条件查找方法的查询 132 Select方法的查询 133 四.全部语法 133 EJB QL语法的BNF定义 134 FROM子句 137 路径表达式 139 WHERE子句 141 BETWEEN表达式 143 IN表达式 143 LIKE表达式 143 SELECT子句 146 五.EJB QL的限制 147 第三部分 Web技术 148 第9章 网络客户端及组件 148 网络客户端的生命周期 148 网络应用结构 149 创建WAR文件 150 将WAR文件加入到EAR文件中 150 增加一个Web组件到WAR文件中 150 配置Web客户 151 应用级配置 151 WAR级的配置 151 组件及配置 151 部署网络客户 152 运行网络客户 152 更新网络客户 152 国际化网络客户 152 第10章 Java Servlet技术 153 什么是Servlet? 153 有关Servlets的例子 153 处理错误 155 处理servlet生命周期事件 156 指定事件监听类 157 处理错误 157 共享信息 157 使用域对象 157 控制共享资源的并发入口 158 访问数据库 159 初始化Servlet 160 编写Service方法 160 通过request取得信息 161 构造Responses 162 过滤请求及响应 163 编写Filter 163 编写自定义的请求与响应 165 指定filter映射 166 调用其它网络资源 167 响应中包含其它资源 167 转移控制到其它网络组件 168 访问Web Context 168 维持客户端状态 169 访问一个会话 169 将属性与会话绑定 169 与会话相关联的通知对象 170 会话管理 170 会话跟踪 170 结束servlet 171 跟踪服务请求 171 通知方法Shut Down 172 创建长时间运行的方法 173 第11章 JSP技术 175 什么是JSP页面 175 JSP页面的例子 176 JSP页面的生命周期 179 转换与编译 179 异常 179 初始化及结束一个JSP页面 180 生成静态内容 181 生成动态内容 181 在JSP中使用对象 181 隐式对象 181 特定应用程序对象 181 共享对象 182 JSP scripting 元素 182 声明 182 脚本(scriptlets) 183 表达式 184 在JSP页面中包含内容 185 转换控制到另一网络组件 185 参数元素 185 包含Java小程序(applet) 185 扩展JSP语言 187 第12章 JSP页面中的JavaBean组件 189 JavaBean组件设计约定 189 为什么要使用JavaBean组件 190 创建并使用JavaBean组件 190 设置JavaBean组件属性 190 返回JavaBean组件属性 191 第13章 在JSP页面中自定义标签 193 什么是自定义标签? 193 JSP页面的例子 193 使用标签 196 声明标签 196 标签种类 196 简单标签 196 带有属性的标签 196 带体的标签 197 在传递信息时选择属性还是体 197 定义脚本变量的标签 197 标签的相互协作 197 定义标签 198 标签处理器 198 标签库描述符 198 简单标签 200 标签属性 200 标签体 202 定义脚本变量的标签 203 与标签协作 205 例子 207 迭代标签 207 标签处理器 208 模板标签库 208 JSP页面 208 标签处理器是如何被调用的? 211 第14章 事务 213 一.什么是事务 213 二.容器管理事务 214 事务的属性 214 容器管理事务的回滚 217 同步会话Bean的实例变量 218 容器管理事务中不允许使用的方法 219 三.Bean管理事务 219 JDBC 事务 220 JTA 事务 221 非提交返回事务 222 在Bean管理事务中不允许使用的方法 222 四.企业Bean事务摘要 222 五.事务超时 222 六.隔离级别 223 七.更新多个数据库 223 八.Web 组件事务 225 第15章 安全 226 一.纵览 226 二.安全角色 227 声明和连接角色引用 227 映射角色到J2EE用户和组 228 三.Web层安全 228 保护Web资源 228 控制Web资源访问 229 Web资源访问的用户验证 229 使用编程安全机制 230 不受保护的Web资源 230 四.EJB层安全 230 声明方法许可 230 使用编程安全机制 231 不受保护的EJB层资源 231 五.应用程序客户端层安全 231 确定应用程序客户端的回调处理机制 232 六.EIS(Enterprise Information System)层安全 232 配置契约 232 容器管理的契约 232 组件管理的契约 233 配置资源适配器安全 233 七.传递安全身份 234 配置组件使用的传递安全身份 234 配置客户端验证机制 235 容器间的信任机制 235 八.J2EE用户、域和组 235 管理J2EE用户和组 236 九.安装服务器证书 236 第16章 资源连接 238 一.JNDI名和资源引用 238 在deploytool中配置资源引用 239 二.数据库连接 241 获得连接 241 用deploytool指定数据库用户名和密码 242 连接池 243 三.邮件服务连接 243 运行ConfirmerEJB例子 244 四.URL资源连接 245 运行HTMLReaderEJB例子 246 第17章 DUKE的银行应用程序 247 EJB 248 会话BEAN 248 实体BEAN 250 帮助类 251 数据库表 251 保护EJB 252 应用程序客户端 253 账号管理 254 类和他们之间的关系 254 Web客户端的生命循环 261 国际化 265 编译,打包,部署运行应用程序: 266 启动j2ee 服务器部署工具和数据库 268 给企业归档(archive)文件打包 269 打开企业归档文件 269
我们学得JSP教材,希望对你有所帮助. 教学目标 了解JDBC、J2EE、EJB、Java、Servlet 、JSP技术。 理解JSP的两种体系结构。 教学重点 JSP技术 用JSP开发Web站点的几种主要方式 JSP的两种体系结构 教学过程 Java技术 JSP技术 用JSP开发Web站点的几种主要方式 理解JSP的两种体系结构 1.1 Java技术 Java Beans JDBC J2EE EJB Java Servlet JavaBeans JavaBeans是一个十分完整的组件模型,它能够支持标准组件技术中的各种特性:属性(properties)、事件(events)、方法(method)和持续性(persistence),这和“对象”是十分相似的。设计一个JavaBeans分为以下几个步骤: 指定Beans的属性; 指定Beans所产生或响应的事件; 定义Beans应公开给其它Bean的属性、方法和事件。 JavaBeans开发起来简单,许多动态页面处理过程实际上被封装到了JavaBeans当中,所以JSP页面比传统的ASP或PHP页面更加简洁。 JDBC JDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成。在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。一般来说,JDBC类文件和Java小应用程序是存放在客户端,用来访问位于远程服务器上的数据库。 J2EE J2EE(Java2 Platform Enterprise Edition)平台规范是一个由SUN公司定义的用于简化分布式企业级应用开发与部署的基于组件的模式。为了降低成本,加快企业应用程序的设计和开发,J2EE 平台提供了一个基于组件的方法来设计、开发、装配及部署企业应用程序,并提供了多层的分布式的应用模型、组件再用、一致化的安全模型以及灵活的事务控制。因此程序员可以更快的速度向市场推出创造性的客户解决方案,并且独立的、基于组件的J2EE解决方案不会被任何一个厂商的产品和API所束缚。 J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持。 EJB EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。采用EJB可以使得开发商业应用系统变得、容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其它的环境中,随着需求的改变,应用系统可以不加修改地迁移到其它功能更强、更复杂的服务器上。 EJB简化了多层体系结构应用系统的开发过程。在分布式应用系统的开发中,采用多层体系结构的方法有很多优点,如增加了应用系统的可伸缩性的、可靠性、灵活性等。服务器端构件可以根据应用需求迅速地加以修改,且构件在网络中的位置和应用无关,因此系统管理员可以很容易地重新配置系统的负载。 Java Servlet Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。Java Servlet API定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。除了Java Servlet API,Servlet还可以使用用以扩展和添加到API的Java类软件包。 Servlet在启用Java的Web服务器上或应用服务器运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好象Java applet对于Web浏览器,Servlet的主要功能在于可以事先交互式地浏览和修改数据,生成动态Web内容。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。 1.2 JSP技术 JSP技术概述 JSP技术的优势和不足 JavaServer Pages白皮书 JSP技术概述 作为一种基于文本的、以显示为中心的开发技术,JSP以Java Servlet为基础,提供了Java Servlet的所有优点,并且当与一个JavaBeans类结合在一起时,提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑使得更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手,就可以用带有JavaBeans类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。数据由JavaBeans类提供,这样在模板中就没有Java代码,这就意味着这些模板可以由一个HTML编写人员来维护。当然,也可以利用Java Servlet来控制网站的逻辑,通过Java Servlet调用JSP文件的方式来将网站的逻辑和内容分离。 JSP技术的优势和不足 JSP的优势: 程序可以跨台平执行。目前几乎所有平台上都可以见到一致的java servlet/jsp的Web Server/Application Serve系统。JSP可以让开发人员在任意环境做开发,在任意环境进行系统部署,在任意环境扩展应用程序。 多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具而且有许多可以免费得到,并且其中的许多已经可以顺利的运行于多种平台之下。 强大的的可伸缩性。从只有一个小的jar文件就可以运行servlet/jsp到由多台服务器进行集群和负载均横,到多台Application进行事务处理、消息处理等。 JSP也有它自己的不足: 跨平台的功能和极度的伸缩能力极大的增加了产品的复杂性。也就是说,它在扩展时需要分成多少块,那么java系统中就有多少种产品。所以用户要以看到jre、jdk、jsdk、jswdk等,实际上它们只要有效的搭配在一起,就可以产生强大的效能,密不可分,但这同时使应用程序变得非常复杂。 JSP只有对Java相当熟悉的人才能用得很好,而目前Java程序员还比较少。 JSP程序调试困难。JSP页面首先被转化为一个.java文件(servlet),然后再被编译。这样,出错信息实际上指向的是经过转化的那个.java文件而不是jsp本身。 很难选择合适的servlet引擎。目前还没有一个独立的组织来对各种引擎提供独立的benchmark测试。提供商只对他们自己的产品提供了benchmark测试,但结论通常以数据形式给出。 JavaServer Pages白皮书 Java Server Pages(JSP)技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。 这个白皮书提供了JSP技术的全面概述,描述了其开发背景以及这项技术的总体目标。 1.3 用JSP开发Web站点的几种主要方式 JSP开发Web站点主要有以下几种方式: 直接使用JSP。对于最小型的Web站点,可以直接使用JSP来构建动态网页,这种站点最为简单,所需要的仅仅是简单的留言板、动态日期等基本的功能。 JSP+JavaBeans。中型站点面对的是数据库查询、用户管理和小量的商业业务逻辑。对于这种站点,不能将所有的东西全部交给JSP页面来处理。在单纯的JSP中加入JavaBeans技术将有助于这种中型站的开发。利用JavaBeans,将很容易完成如数据库连接、用户登录与注销、商业业务逻辑封装的任务。 JSP+JavaBeans+Servlet。在逻辑关系异常复杂的网站中,借助于Servlet和JSP良好的交互关系和JavaBeans的协助,完全可以将网站的整个逻辑结构放在Servlet中,而将动态页面的输出放在JSP页面中来完成。在这种开发方式中,一个网站可以有一个或几个核心的Servlet来处理网站的逻辑,通过调用JSP页面来完成客户端(通常是Web浏览器)的请求。在J2EE模型中,Servlet的这项功能可以被EJB取代。 J2EE开发模型。在J2EE开发模型中,整个系统可以分为3个主要的部分:视图、控制器和模型。视图就是用户界面部分,主要处理用户看到的东西。控制器负责网站的整个逻辑,用于管理用户与视图发生的交互。模型是应用业务逻辑部分,这一部分的主要角色是EJB ,借助于EJB强大的组件技术和企业级的管理控制,开发人员可以轻松地创建出可重用的业务逻辑模块。 1.4 理解JSP的两种体系结构 Model 1 Model 2 Model 1 JSP页面中可以非常容易地结合业务逻辑(jsp:useBean)、服务端处理过程(jsp:scriplet)和HTML(),在JSP页面中同时实现显示,业务逻辑和流程控制,从而可以快速地完成应用开发。这种以JSP为中心的开发模型称之为Model 1。 Model 2 Model 2是一种把JSP与servlets联合使用来实现动态内容服务的方法。它吸取了两种技术各自的突出优点,用JSP生成表达层的内容,让servlets完成深层次的处理任务。在这里,servlets充当控制者的角色,负责管理对请求的处理,创建JSP页需要使用的bean和对象,同时根据用户的动作决定把那个JSP页传给请求者。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧