tomcat中,web.xml配置filter出错

马行空牛耕田 2004-04-06 03:03:07
环境:win2000 pro , tomcat 4.1.24 ,mysql 4.0.18,struts 1.1

根据网上流行的解决struts中文问题的方案,在web.xml中添加过滤器,如下:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.zhiss.JLLPro.common.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>

问题:启动tomcat时,报错,错误信息如下:
Starting service Tomcat-Standalone
Apache Tomcat/4.1.24
2004-4-6 14:35:08 org.apache.commons.digester.Digester error
严重: Parse Error at line 9 column 12: Element type "filter" must be declared.
org.xml.sax.SAXParseException: Element type "filter" must be declared.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(
Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

尝试解决方案如下,均告失败:
1、因为是org.apache.commons.digester.Digester error,所以在apache.org重新下载了最新的digester包,替换本地tomcat 的 server/lib下的解析xml的包,无效;
2、打开web.xml,发现doctype定义如下:
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
直接使用http://java.sun.com/j2ee/dtds/web-app_2_2.dtd访问该dtd,发现无filter的定义,疑惑中……
3、使用tomcat 5.0以上版本则正确。

怎么办,请大侠指点迷津!!!!
...全文
1372 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
look4u 2004-09-10
  • 打赏
  • 举报
回复
GZ!
马行空牛耕田 2004-04-09
  • 打赏
  • 举报
回复
好的,谢谢 CoolAbu(阿卜-Never Stop)
CoolAbu 2004-04-08
  • 打赏
  • 举报
回复
web.xml中的DTD中规定了顺序的

http://java.sun.com/dtd/web-app_2_3.dtd 你用IE打开这页就可以看到什么样的顺序了。
马行空牛耕田 2004-04-08
  • 打赏
  • 举报
回复
TO l_walker(靡不有初,鲜克有终!) :
我也试试,谢谢

TO sagittarius1979(射手爱狮子):
这个也会有顺序吗? 我找找先,呵呵
awaysrain 2004-04-08
  • 打赏
  • 举报
回复
你看dtd中的声明,你得xml文件必须符合dtd才可以
awaysrain 2004-04-07
  • 打赏
  • 举报
回复
Filter的配置需要放到web.xml中对应的位置
你可以参照dtd中的声明
<!ELEMENT web-app (icon?, display-name?, description?, distributable?,
context-param*, filter*, filter-mapping*, listener*, servlet*,
servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,
error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,
login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)>

也就是说如果你的web.xml如果出现filter的话应改是在context-param(如果有的话)和listener(如果有的话)之间的

你把filter的配置的位置调整一下就应改可以了
====================================
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>Struts JLL Application</display-name>

<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.zhiss.JLLPro.common.SetCharacterEncodingFilter</filter-class>

<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>

<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>

</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
<!-- <url-pattern>*.do</url-pattern> -->
</filter-mapping>


<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>


</web-app>

sagittarius1979 2004-04-07
  • 打赏
  • 举报
回复
这个定义的顺序可能也和dtd相关,找找看。
马行空牛耕田 2004-04-07
  • 打赏
  • 举报
回复
虽说问题解决了,但是还是有疑问啊,为何有个
<display-name>Struts JLL Application</display-name>
就非得把filter部分放在它下面才行呢,唉,不明所以啊
l_walker 2004-04-07
  • 打赏
  • 举报
回复
问题出在tomcat对web。xml文件的处理上,tomcat要求必须严格按照servlet规范书写servlet和filter等,而resin等则可以自由一点,因此如果将resin上的程序移植到tomcat上常常出这类错误,

而且resin在默认状态下启动时即加载filter,而tomcat则不会,因此也会有一些问题

我的解决办法是用eclipse的easystruts等插件来写webxml和struts-config xml

good luck:)
l_walker 2004-04-07
  • 打赏
  • 举报
回复
问题出在tomcat对web。xml文件的处理上,tomcat要求必须严格按照servlet规范书写servlet和filter等,而resin等则可以自由一点,因此如果将resin上的程序移植到tomcat上常常出这类错误,

而且resin在默认状态下启动时即加载filter,而tomcat则不会,因此也会有一些问题

我的解决办法是用eclipse的easystruts等插件来写webxml和struts-config xml

good luck:)
老土豆T 2004-04-06
  • 打赏
  • 举报
回复
哈,喜欢楼主那种精神:)


Filter 确实是是到 2.3 才有的东东:)
marrio 2004-04-06
  • 打赏
  • 举报
回复
看来部署描述符的确要符合一定的顺序

//这种帖子我喜欢,起码有引人入胜的debug情节
马行空牛耕田 2004-04-06
  • 打赏
  • 举报
回复
搞定了,错误原因有二:
1、dtd引用错,应该使用http://java.sun.com/dtd/web-app_2_3.dtd
2、因为使用了一个标签: <display-name>Struts JLL Application</display-name>
结果导致标签匹配出错,把filter段移动到该标签相邻的下方,即不报错,否则无论移到哪里,都报错,原因未知。

出错web.xml如下(省去了部分):
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>Struts JLL Application</display-name>

<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>



<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.zhiss.JLLPro.common.SetCharacterEncodingFilter</filter-class>

<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>

<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>

</filter>

<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
<!-- <url-pattern>*.do</url-pattern> -->
</filter-mapping>

</web-app>
马行空牛耕田 2004-04-06
  • 打赏
  • 举报
回复
发现问题了: web.xml的doctype定义应该是不对的,因为Web Application 2.2代表着只支持servlet2.2(我猜想),而filter是servlet2.3的特性,所以我果断更改了dtd,Web Application 版本改为2.3,现在是:
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

再查看http://java.sun.com/dtd/web-app_2_3.dtd,果然发现filter定义其中,但是新的问题出来了:

2004-4-6 16:01:40 org.apache.commons.digester.Digester error
严重: Parse Error at line 126 column 11: The content of element type "web-app" must match "(icon?,di
splay-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,se
rvlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref
*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*
)".
org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name
?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapp
ing*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource
-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)


这种情况我也遇到过,肯定是web.xml中某些标签没有正确结束或书写,但是查遍了,却没找到漏洞,气愤中,请大家帮忙找找看:
Java Web编程宝典-十年典藏版.pdf 是PDF电子书,不是源码。共分2个包。 《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书介绍了应用Java Web进行程序开发的各种技术、技巧。全书分4篇,共24章,其,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、Spring核心之AOP、程序调试与发布等内容;第2篇为范例演练篇,主要包括基础知识相关、数据库相关、图像与文件相关、图表与报表相关、Ajax等相关的范例;第3篇为项目实战篇,主要包括讯友联系人管理模块、播客视频管理模块、博客管理模块、明日知道论坛管理模块等4个小型项目:第4篇为商业系统篇,主要包括一个大型的商业项目,即天下淘网上购物商城系统。 《Java Web编程宝典(十年典藏版)》附有配套DVD光盘,光盘提供了书全部实例和项目的源代码。这些源代码全部经过精心调试,能够在Windows XP、WindowsServer2003及Windows7操作系统下编译和运行。 《Java Web编程宝典(十年典藏版)》适用于Java Web的初学者、编程爱好者,同时也可以作为培训机构、大专院校老师和学生的学习参考用书。 目录 第1篇 技能学习篇 第1章 驾驭Ja垤Web开发环境 ——开启JavaWeb开发之门 1.1 本章学习任务 1.1.1 本章知识体系 1.1.2 实例开发任务 1.2 初窥JavaWeb应用 1.2.1 理解C/S结构 1.2.2 理解B/S结构 1.2.3 B/S与C/S的区别 1.2.4 了解JavaWeb应用的成功案例 1.3 JavaWeb开发的基石-开发工具包JrDK 1.3.1 下载JDK 1.3.2 JDK的安装 1.3.3 配置和测试JDK 1.4 JavaWeb应用的Web服务器Tomcat 1.4.1 Web应用服务工作原理 1.4.2 web应用服务器汇总 1.4.3 获取Tomcat 1.4.4 熟悉Tomcat的五脏六腑 1.5 JavaWeb开发利器之Eclipse 1.5.1 获取Eciipse 1.5.2 运行Eclipse 1.5.3 打造文版Eclipse 1.6 做好项日开发的准备工作 1.6.1 集成Eelipse与Tomcat 1.6.2 完善web项目开发所需配置 1.7 实战检验 1.7.1 创建第一个Java Web项目 1.7.2 将图片输出到JSP页面之 1.8 疑难解惑 1.8.1 Tomcat端口被占用导致不能启动 1.8.2 Eelipse没有创建JSP项 1.9 精彩回顾 第2章 JavaWeb开发必修课 ——JSP语法 2.1 本章学习任务 2.1.1 本章知识体系 2.1.2 实例开发任务 2.2 什么是JSP 2.2.1 JSP简介 2.2.2 理解JSP运行原理 2.3 使用JSP指令标识 2.3.1 页面指令page的使用 2.3.2 文件包含指令include的使用 2.3.3 引用标签库指令taglib的使用 2.4 使用JSP脚本 2.4.1 在JSP应用代码片段 2.4.2 使用JSP表达式 2.4.3 声明标识的使用 2.5 注释的魅力 2.5.1 基本的HTML注释 2.5.2 JSP隐藏注释 2.5.3 代码片段的注释 2.6 常用的JSP动作标识 2.6.1 使用包含动作标识 2.6.2 使用请求转发的动作标识 2.6.3 子动作标.iR~使用 2.7 实战检验 2.7.1 输出九九乘法表 2.7.2 JSP实现随机抽奖 2.8 疑难解惑 2.8.1 在JSP页面编写文之后不能保存 2.8.2 访问JSP页面出现乱码 2.8.3 在JSP页面使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP内置对象概述 3.2.1 为什么需要JSP内置对象 3.2.2 内置对象及其使用场合 3.3 out输出对象的应用 3.3.1 向客户端输出数据 3.3.2 管理相应缓冲区 3.4 request请求对象的应用 3.4.1 获取请求参数 3.4.2 解决文乱码 3.4.3 获取客户端数据 3.5 response回应对象的应用 3.5.1 HTTP头信息的操作 3.5.2 设置MIME类型 3.5 13页面重定向操作 3.6 Session会话对象的应用 3.6.1 session的生命周期 3.6.2 会话的创建与获取. 3.6.3 移除session的数据 3.6.4 设置session的有效时间 3.7 application应用对象应用 3.7.1 application的生命周期 3.7.2 application数据的操作 3.7.3 Web应用初始化参数的配置 3.7.4 application对象应用示例 3.8 其他内置对象的应用 3.8.1 应答与请求的page对象 3.8.2 页面上下文的page Context对象 3.8.3 获取web.xml配置信息的config对象 3.8.4 获取异常信息的exception对象 3.9 实战检验 3.9.1 将网页保存为Word文档 3.9.2 学生管理系统用户登录模块 3.10 疑难解惑 3.10.1 表单提交文数据乱码 3.10.2 如何在超链接传递多个参数 3.10.3 重定向后出现404错误 3.11 精彩回顾 第4章 体验面向对象 1IavaBean技术 4.1 本章学习任务 4.1.1 本章知识体系 4.1.2 实例开发任务 4.2 JavaBean简介 4.2.1 JavaBean产生的背景 4.2.2 使用JavaBean的意义 4.2.3 了解JavaBean的规范. 4.2.4 Eelipse对JavaBean方法的支持 4.3 JavaBean与JSp的完美结合 4.3.1 更加对象化的JSP开发 4.3.2 标识的应用 4.3.3 标识的应用 4.3.4 标识的应用 4.3.5 开发体验之JavaBean实现档案录入 4.4 实战检验 4.4.1 利用JavaBean实现电子时钟 4.4.2 通过JSP、JavaBean实现调查问卷 4.5 疑难解惑 4.5.1 不能获取JavaBean的属性信息 4.5.2 不能为JavaBean属性赋值 4.5.3 获取不到表单的所有信息 4.6 精彩回顾 第5章 Web应用的缔造者 ——Servlet技术 5.1 本章学习任务 5.1.1 本章知识体系 5.1.2 实例开发任务 5.2 与时俱进——了解Servlet技术 5.2.1 初步认识Servlet 5.2.2 Servlet与JSP的区别 5.3 为我所用——Servlet技术开发 5.3.1 Servlet在JavaEE的结构体系 5.3.2 Servlet核心API 5.3.3 创建第一个Servlet对象 5.3.4 Servlet配置解析 5.3.5 使用Servlet处理业务逻辑 5.3.6 掌握Servelet处理流程 5.3.7 Eclipse快速创建Servlet 5.4 一夫当关——配置并应用Servlet过滤器 5.4.1 过滤器的基本原理 5.4.2 过滤器的核心API 5.4.3 过滤器的创建与配置 5.4.4 JavaWeb字符乱码分析 5.4.5 实现字符编码过滤器 5.5 实战检验 5.5.1 通过Servlet实现录入用户信息 5.5.2 应用过滤器实现网页计数器 5.6 疑难解惑 5.6.1 访问Servlet出现404错误 5.6.2 修改Servlet无效 5.6.3 创建过滤器并没有实现过滤效果 5.7 精彩回顾 第6章 打造无脚本的JSP页面 ——EL与JSTL标签库 6.1 本章学习任务 6.1.1 本章学习任务 6.1.2 实例开发任务 6.2 EL与ISTL简介 6.2.1 什么是EL 6.2.2 什么是JSTL 6.3 EL表达式的应用 6.3.1 EL的基本语法. 6.3.2 EL的运算符 6.3.3 EL的隐含对象 6.4 JSTL核心标签库的应用 6.4.1 数据访问标签 6.4.2 流程控制标签 6.4.3 循环标签 6.5 JSTL格式标签库的应用 6.5.1 使用格式化数字 6.5.2 使用格式化时间 6.6 实战检验 6.6.1 根据星期显示不同的提示信息 6.6.2 读取数组的数据 6.7 疑难解惑 6.7.1 JSTL的优点 6.7.2 JSTL和EL的关系 6.8 精彩回顾 第7章 动态网站之灵魂 ——数据库应用开发 7.1 本章学习任务 7.1.1 本章知识体系. 7.1.2 实例开发任务 7.2 My SQL数据库的安装与使用 7.2.1 安装并配置MyS QL 7.2.2 安装MySQLGUITool 7.2.3 连接MySQLAdministrator. 7.2.4 创建数据库 7.2.5 创建数据表 7.2.6 编辑数据表的数据 7.3 JDBC技术 7.3.1 JDBC技术原理 7.3.2 JDBC连接数据库的过程 7.3.3 JDBC连接MySQL数据库 7.4 JDBC核心API 7.4.1 代表数据库连接的Connection接口 7.4.2 驱动程序管理器DriverManager类 7.4.3 执行SQL语句的Statement接口 7.4.4 预编译执行SQL语句的PreparedStatement接口 7.4.5 结果集ResultSet接1:2 7.5 JDBC操作数据库 7.5.1 向数据库插入数据 7.5.2 从数据库查询所需数据 75.3 修改数据库的数据 7.5.4 删除无用的数据 7.5.5 批处理数据操作 7.5.6 应用存储过程进行数据操作 7.6 实战检验 7.6.1 JDBC连接SQLServer2005数据库 76.2 网站用户注册 7.7 疑难解惑 7.7.1 Prepared Statement与Statement 7.7.2 预编译的理解 7.8 精彩回顾 第8章 浅尝辄止 ——初识Struts2 8.1 本章学习任务 8.1.1 本章知识体系 8.1.2 实例开发任务. 8.2 Struts2概述 8.2.1 理解MVC原理 8.2.2 Struts2框架的产生 8.2.3 Struts2的结构体系 8.3 Struts2入门 8.3.1 Struts2的获取与放置 8.3.2 第一个Struts2程序 8.4 Action对象 8.4.1 认识Action对象 8.4.2 请求参数的注入原理 8.4.3 Action的基本流程 8.4.4 什么是动态Action 8.4.5 动态Action的应用 8.5 Struts2的配置文件 8.5.1 Struts2的配置文件类型 8.5.2 Struts2的包配置 8.5.3 名称空间配置 8.5.4 Action相关配置 8.5.5 通配符实现简化配置 8.5.6 返回结果的配置 8.6 Struts2的开发模式 8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密Struts2高级技术 9.1 本章学习任务 9.1.1 本章知识体系 9.1.2 实例开发任务 9.2 OGNL表达式语言 9.2.1 认识OGNL 9.2.2 Struts2框架的OGNL 9.2.3 操作普通的属性与方法 9.2.4 访问静态方法与属性 9.2.5 访问数组 9.2.6 访问List、Set、M印集合 9.2.7 投影与选择 9.3 Struts2的标签库 9.3.1 数据标签的应用 9.3.2 控制标签的应用 9.3.3 表单标签的应用 …… 第10章 邂逅数据库持久化利器 第11章 探秘数据库持久化利器 第12章 简化企业开发瑰宝之一 第13章 简化企业开发瑰宝之二 第14章 程序员的伴侣 第2篇 范例演练篇 第15章 学以致用 第16章 幕后英雄的用武之地 第17章 Web开发的制胜法宝 第18章 数据分析大师 第19章 体验完美视觉盛宴 第3篇 项目实战篇 第20章 通讯录开发模板 第21章 打造自己的视频网站 第22章 自我展示的空间 第23章 技术交流的平台 第4篇 商业系统篇 第24章 基于SSH2的天下淘商城

67,513

社区成员

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

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