Struts+Spring+Hibernate練習(xí)(完整)
Posted on 2005-11-06 11:04 oksonic 閱讀(203491) 評論(246) 編輯 收藏 所屬分類: java<formset>
<form name="loginForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
</formset>
</form-validation>
prompt.password=User Password
增加以下內(nèi)容
prompt.password=登錄密碼
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
String username=loginForm.getString("username");
String password=loginForm.getString("password");
if(username.equals("test")||password.equals("test")){
return mapping.findForward("indexGo");
}else{
return mapping.getInputForward();
}
}
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="com.test.struts.action.LoginAction" />
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false"></bean>
`ID` int(11) NOT NULL auto_increment,
`USERNAME` varchar(50) NOT NULL default '',
`PASSWORD` varchar(50) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
UserDAO.java
public interface UserDAO {
public abstract boolean isValidUser(String username, String password);
}
UserDAOImp.java
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.test.Hibernate.SessionFactory;
public class UserDAOImp extends HibernateDaoSupport implements UserDAO {
private SessionFactory sessionFactory;
private static String hql = "from User u where u.username=? ";
public boolean isValidUser(String username, String password) {
List userList = this.getHibernateTemplate().find(hql, username);
if (userList.size() > 0) {
return true;
}
return false;
}
}
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
public class LoginAction extends Action {
private UserDAO userDAO;
return userDAO;
}
this.userDAO = userDAO;
}
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;
// TODO Auto-generated method stub
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
loginForm.set("password", null);
if (userDAO.isValidUser(username,password)) {
return mapping.findForward("indexGo");
} else {
return mapping.getInputForward();
}
}
綠色字體為修改部份
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/test/Hibernate/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<property name="userDAO">
<ref bean="userDAOProxy" />
</property>
</bean>
</beans>
Feedback
查了很久,原來是表名不能用user, user 為 SQL SERVER 的關(guān)鍵字
碰到同樣問題的 把表名改掉就OK了,
感謝樓主的動畫
<property name="mappingResources">
<list>
<value>com/yourcompany/hibernate/Users.hbm.xml</value>
</list>
</property>
這段代碼 就 會找不到action
好不郁悶
MyEclipse 5.5.0 Milestone 1
Spring 2.0
Struts 1.2
hibernate 3.0
mysql 5.0
驅(qū)動 mysql-connector-java-3.2.0-alpha-bin
麻煩摟主 看看
new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
EchoMessageDAO echoMessage =
(EchoMessageDAO) context.getBean("EchoMessageDAO");
EchoMessage me = new EchoMessage();
me.setMsg("heeelo;;;;;");
echoMessage.save(me);
以上語句,拋出異常:
2007-05-12 19:29:03,703 ERROR (EchoMessageDAO.java:32) - save failed
org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: com.ton.rom.EchoMessage; nested exception is org.hibernate.MappingException: Unknown entity: com.ton.rom.EchoMessage
org.hibernate.MappingException: Unknown entity: com.ton.rom.EchoMessage
那一句是 getHibernateTemplate().save(transientInstance);
請問是什么問題?
出現(xiàn)這個(gè)問題最有可能就是DAO類有錯誤
寫個(gè)DAO的測試類
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
我今天才在別個(gè)那里看到做這個(gè)方面的東西..在我認(rèn)為struts只是獲取頁面提交的東西.,.然后由application.xml文件中找到相對應(yīng)的action,然后再根據(jù)action的依賴項(xiàng)找到相對應(yīng)的DAO(實(shí)現(xiàn)類),再由這個(gè)實(shí)現(xiàn)類找到相對應(yīng)的DAOImp(接口類),最后在struts里面就添加一個(gè)DAO的屬性.(這個(gè)是不是才叫依賴式的注入呢?我也不清楚..),再在action里面只要調(diào)用此屬性的實(shí)現(xiàn)方法就可以啦..
(管你是動態(tài)的還是靜態(tài)的actionForm)
----只是我本人今天的一點(diǎn)看法...不好意思才看別人用這個(gè)東西.我還沒有用過.
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-07-04 19:59 by richard_gaoSpring+struts+hibernate
出錯原因很簡單
struts-config.xml
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
myeclipse 把a(bǔ)pplicationContext.xml放在classes文件夾下
不知道大家發(fā)現(xiàn)沒有?
現(xiàn)在我也是HTTP Status 404 - Servlet action is not available 很頭疼啊.
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-08-24 02:19 by 鐘文創(chuàng)javax.servlet.ServletException: Hibernate operation: could not execute query; uncategorized SQLException for SQL [select user0_.ID as ID, user0_.username as username0_, user0_.password as password0_ from user user0_ where user0_.username=? and password=?]; SQL state [HY000]; error code [156]; [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯誤。; nested exception is java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在關(guān)鍵字 'user' 附近有語法錯誤。
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-08-24 03:20 by 鐘文創(chuàng)感謝YY寫的問題,讓我解決了
Servlet action is not available
的問題,太感謝你了。你的方法是很對的,希望后來者能得到由衷的解惑。
他的解答是:
找不到action的問題解決方法:
出現(xiàn)這個(gè)問題最有可能就是DAO類有錯誤
寫個(gè)DAO的測試類
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-08-24 03:34 by 鐘文創(chuàng)這個(gè)問題,可以這樣:
1.先看看login.jsp的提交是不是action="/login"
2.再從struts-config.xml著手,看是不是各種導(dǎo)入的文件的路徑對不對;
3.最后同樣看看applicationContext.xml是不是也有路徑的問題。
像我就是導(dǎo)入U(xiǎn)serDAOImp.java時(shí)寫錯路徑了,結(jié)果邊驗(yàn)證表單是不是空的都出錯,是非常快地報(bào)錯,很讓我郁悶!
感謝YY的解答,我用他給的DAO的測試類測試了程序 ,系統(tǒng)馬上報(bào)錯說是applicationContext.xml里面的UserDAOImp找不到,然后就感覺好像抓住了救命草,改了過來就一一下子成功了!
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-08-25 01:00 by 鐘文創(chuàng)解決 Servlet action is not available
這個(gè)問題
4.如果還不行的話,那就是applicationContext.xml的 開頭 錯了,應(yīng)該為:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
.....
.....
</beans>
錄像請到www.oksonic.cn去下載,注冊一個(gè)用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個(gè)用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個(gè)用戶即可下載所有錄像!
錄像請到www.oksonic.cn去下載,注冊一個(gè)用戶即可下載所有錄像!
<list>
<value>com/wolf/User.hbm.xml</value>
</list>
</property> 就會執(zhí)行到驗(yàn)證呢。。 不論我參考什么資料做ssh練習(xí)。都是這個(gè)同樣的問題沒法解決。。 誰能給我一個(gè)理由啊。
仔細(xì)檢查一下,問題實(shí)際上已經(jīng)找到了。
// TODO Auto-generated method stub
ApplicationContext context =
new FileSystemXmlApplicationContext(
"src/applicationContext.xml");
UserDAO userDAO =
(UserDAO) context.getBean("userDAO");
System.out.println("name: " + userDAO.isValidUser("test", "test"));
}
測試都是挺OK的啊。。說明不是跟數(shù)據(jù)庫配置出問題了啊。。我的myeclipse版本是5.5的。。會不會是hibernate3.0包會有問題啊。。
arking servlet action as unavailable
2007-08-30 09:33:27 StandardContext[/SSH829]Servlet /SSH829 threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1029)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4013)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4357)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-08-30 10:21 by 我也是初學(xué)者此錯誤多是由于spring上下文載入失敗引起
在struts中引入了spring之后,工程的上下文便交給spring插件負(fù)責(zé)載入
在struts-config.xml中:
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
此時(shí)找不到action多是由配置文件的位置不對引起的,即服務(wù)器找不到applicationContext.xml,注意查看myEclipse是否將該配置文件復(fù)制到了正確的位置。
或者有其他錯誤---------當(dāng)spring或者Hibernate配置文件中的配置有問題時(shí)就會出現(xiàn)這種情況
出現(xiàn)這個(gè)問題最有可能就是DAO類配置有錯誤,sping的配置文件出錯在web方式下是看不到的,可以寫個(gè)DAO的測試類在java環(huán)境下查錯
public static void main(String[] args) {
String[] path = {"/WebRoot/WEB-INF/applicationContext.xml"};
ApplicationContext ctx = new FileSystemXmlApplicationContext(path);
UserDAO dao = (UserDAO) ctx.getBean("userDAO");
System.out.print(dao.isValidUser("uu","pp"));
很快可以找出錯誤的地方;
歡迎交流:QQ-57875031
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
這個(gè)東西 樓主應(yīng)該沒配置
不然你那個(gè)loginaction 里怎么能用userDao屬性
樓上有個(gè)仁兄 說找不到applicationContext.xml
樓主應(yīng)該沒配置
即使配置了 那個(gè)仁兄 你也得注意applicationContext.xml的位置對不對
總之 我用eclipse 不爽 呵呵
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-09-14 22:49 by JerryBeckF<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
src下的文件編譯后跑到/WEB-INF/classes下面去了,項(xiàng)目運(yùn)行時(shí)是不調(diào)用src下的文件的.
String password=loginForm.getString("password");
這兩句是不對的 。
我在eclipse中報(bào)錯
改成
String username=(String)loginForm.get("username");
String password=(String)loginForm.get("password");
即可
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2007-10-16 15:17 by QQ:116167884org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
http://ming204.blog.163.com/blog/static/417138132007102401647810/edit/
知道問題的告訴下小弟 chenjiang588@163.com多謝
# re: Struts+Spring+Hibernate練習(xí)(完整)[未登錄] 回復(fù) 更多評論
2007-12-27 09:42 by Mr.TianShu管理用戶請求,作出響應(yīng)
提供一個(gè)流程控制器,委派調(diào)用業(yè)務(wù)邏輯和其他上層處理
處理異常
為顯示提供數(shù)據(jù)模型
用戶界面的驗(yàn)證
不應(yīng)該出現(xiàn):高耦合,難維護(hù)
與數(shù)據(jù)庫直接通信
與應(yīng)用程序相關(guān)聯(lián)的業(yè)務(wù)邏輯及校驗(yàn)
事物處理
2、持久層:Hibernate
如何查詢對象的相關(guān)信息(HQL或正則表達(dá)式的API)
3、業(yè)務(wù)層(Spring,PicoContainer)依賴注射,控制反轉(zhuǎn)
處理應(yīng)用程序的業(yè)務(wù)邏輯和業(yè)務(wù)校驗(yàn)
管理業(yè)務(wù)層及的對象的依賴
在表示層和持久層之間增加一個(gè)靈活的機(jī)制,使得他們不直接聯(lián)系在一起
通過揭示從表示層到業(yè)務(wù)層之間的上下文來得到業(yè)務(wù)邏輯
管理程序的執(zhí)行(從業(yè)務(wù)層到持久層)
Servlet action is not available
在網(wǎng)上找了些資料,還是沒有解決這個(gè)問題。
我的E-mail:huangshuidan@163.com
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.
我做到struts與spring時(shí)就提示這個(gè)錯誤了,怎么回事啊,我是初學(xué)者請教大家,望大家多多指點(diǎn)啊
發(fā)現(xiàn)好多人說有 Servlet action is not available 異常。
自己寫了一下,也是這個(gè)錯。
后來找了半天,原來是忘了導(dǎo)一個(gè)包,其實(shí)這個(gè)只能賴自己了。
博主已經(jīng)說了,把spring的包全導(dǎo)出進(jìn)去方便。
以為自己有點(diǎn)經(jīng)驗(yàn)。就沒都導(dǎo)進(jìn)去。
結(jié)果忙乎的一個(gè)多小時(shí)找錯。哎~!!!
首先,我得感覺樓主,因?yàn)樗o我們指出的大體的編程方向.
但是有些在編程中出現(xiàn)的問題他可能沒有能夠一一給出,
那么,我今天一天對他的這個(gè)小程序的實(shí)現(xiàn),碰到了以下的問題:
我在此也給出了解決方案(希望能對大家有幫助,技術(shù)共享是我們的目標(biāo)!)
1.利用myeclipse生成validatorForm時(shí),記得將里面的非get,set方法刪掉...
不然,就得在里面重寫一些校驗(yàn)方法了,而且如果不寫,程序?qū)⒉粫M(jìn)行校驗(yàn)!
因?yàn)榇a中的校驗(yàn)級別高于配置文件中的!
2.不要將action-mapping中的/login.jsp前面的/掉了
3.<%@ page language="java" contentType="text/html; charset=UTF-8" %>
這里面的charset部分一定不能掉,否則將會出現(xiàn)亂碼!切記!
4.出現(xiàn)500問題,可能是沒有在sturts-config.xml文件中加載
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
5.struts 404
可能是由于myeclipse未加載完整的spring.jar包.
6.
500
hibernate3.1換成3.0試試!
7. org/springframework/orm/hibernate/support/HibernateDaoSupport 不能找到
原因:因?yàn)閷ibernate3.1換到了3.0,所以,這里的hibernate應(yīng)該變成hibernate3/support..
8.class="org.apache.commons.dbcp.BasicDataSource">
缺少DBCP包,在此處下載一個(gè):http://commons.apache.org/downloads/download_dbcp.cgi
9.java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration
10.java.io.FileNotFoundException: Could not open class path resource [....hbm.xml],提示找不到xml文件?
原因一般有兩個(gè):
(1)該xml文件沒有在classpath中。
(2)applicationContext-hibernate.xml中的xml名字沒有帶包名。
11.Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
其實(shí),不管是哪種數(shù)據(jù)庫,只要把對應(yīng)的JDBC包放入到tomcat 的common/lib下面即可,像本人現(xiàn)在使用的MYSQL
就要導(dǎo)入:mysql-connector-java-3.1.10-bin.jar
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2008-10-08 09:56 by guoyanlong# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2008-10-08 09:57 by guoyanlong可以當(dāng)練習(xí)玩了
多交流知識互相切磋啊
呵呵
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2009-04-17 20:19 by 創(chuàng)意產(chǎn)品網(wǎng)# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2009-12-01 12:09 by 創(chuàng)意產(chǎn)品批發(fā)請問,事務(wù)是在業(yè)務(wù)層進(jìn)行控制吧?
<action attribute="loginLogForm"
name="loginLogForm"
parameter="op"
path="/loginLog"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="loginList"
path="/SystemManager/LoginLog.jsp" />
</action>
然后再Spring的配置文件中
<bean name="/personnel" class="org.myoffice.struts.action.PersonnelAction">
<property name="personnelBiz" ref="personnelBiz"/>
<property name="systemBiz" ref="systemBiz"/>
</bean>
<property>是注入的標(biāo)簽
# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2010-12-15 09:51 by zhangyicou# re: Struts+Spring+Hibernate練習(xí)(完整) 回復(fù) 更多評論
2011-06-27 14:05 by 1227134894只有注冊用戶登錄后才能發(fā)表評論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||