仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1049|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页编程之复杂的struts使用开辟

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。终究把本人的这个测试做完了.但愿对想学struts的老手有所匡助.


(mystruts使用)目次布局
mystruts
|-WEB-INF
||-lib
|||-struts.jar
||-classes
|||-ConnectionPool
||||-getDbConnection.class
|||-mystruts
|||-user1Action.class
|||-userAction.class
|||-userActionForm.class
|||-userdao.class
||-struts-bean.tld
||-struts-config.xml
||-struts-html.tld
||-struts-logic.tld
||-struts-template.tld
|-adduser.jsp
|-index.jsp
|-viewuser.jsp

第一步:开辟情况设置

(假如你还没有相干软件.请到http://www.apache.org下载)

tomcat5.0设置(创建一个mystruts使用,并拷贝相干文件)

请在你的tomcat安装目次中找到confCatalinalocalhost子目次.新建mystruts.xml文件
文件内容以下.在这个文件中.我们将设置一个连接池.请把相干的驱动.数据库用户,暗码改成你本人的本机设置.
并把JDBC驱动拷贝一份到Tomcat5.0commonlib目次下.请把struts.jarmystrutsWEB-INFlib目次下.

<Contextpath="/mystruts"docBase="D:wwwmystrutsmystrutsmystruts"debug="0"privileged="true">

<Resourcename="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>

<ResourceParamsname="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>

<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>

<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>test</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>

<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://192.168.10.223:1433/mystruts</value>
</parameter>
</ResourceParams>
</Context>

WEB-INF/web.xml(到场struts标志库的撑持)

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<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>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
</web-app>

第二步:设置数据库

1.起首创立数据连接bean,并打包到ConnectionPool,它将从我们设置的连接池中获得可用连接.

//JavaDocument
packageConnectionPool;
importjavax.naming.*;
importjavax.sql.*;
importjava.sql.*;
importjava.io.*;
importjava.util.*;

publicclassgetDbConnection{

Connectionconn;
Statementstmt;
ResultSetrs=null;

Stringfoo="NotConnected";
intbar=-1;

publicgetDbConnection(){
try{
Contextctx=newInitialContext();
if(ctx==null)
thrownewException("Boom-NoContext");

DataSourceds=
(DataSource)ctx.lookup(
"java:comp/env/jdbc/TestDB");

if(ds!=null){
conn=ds.getConnection();

}
}
catch(Exceptione){
e.printStackTrace();
}
}

publicConnectiongetCon()
{
returnconn;
}


publicvoidd_close()throwsSQLException
{
if(rs!=null){
try{rs.close();}catch(SQLExceptione){;}
rs=null;
}
if(stmt!=null){
try{stmt.close();}catch(SQLExceptione){;}
stmt=null;
}
if(conn!=null){
try{conn.close();}catch(SQLExceptione){;}
conn=null;
}

}

protectedvoidfinalize()throwsThrowable
{
try{d_close();}catch(SQLExceptione){;}
}

}

2.创立数据库.

数据库名:mystruts

部门表:mydep

_______________________________________
dep_iddep_name
_______________________________________
1dep1
2dep2
3dep3
4dep4
_______________________________________

用户表:myuser
______________________________________________
user_iduser_namedeptel
______________________________________________
1jack10769-2454042
2max20769-2454043
______________________________________________

(注:以上字段为了测试便利.全体利用字符型)


第三步:创立ActionForm(userActionForm.java)



packagemystruts;//请打包到mystruts下.

importorg.apache.struts.action.*;
importjavax.servlet.http.*;

publicclassuserActionFormextendsActionForm{
privateStringaction="add";
privateStringdep;
privateStringtel;
privateStringuser_id;
privateStringuser_name;
publicStringgetAction(){
returnaction;
}
publicvoidsetAction(Stringaction){
this.action=action;
}
publicStringgetDep(){
returndep;
}
publicvoidsetDep(Stringdep){
this.dep=dep;
}
publicStringgetTel(){
returntel;
}
publicvoidsetTel(Stringtel){
this.tel=tel;
}
publicStringgetUser_id(){
returnuser_id;
}
publicvoidsetUser_id(Stringuser_id){
this.user_id=user_id;
}
publicStringgetUser_name(){
returnuser_name;
}
publicvoidsetUser_name(Stringuser_name){
this.user_name=user_name;
}
publicActionErrorsvalidate(ActionMappingactionMapping,HttpServletRequesthttpServletRequest){

returnnull;
}
publicvoidreset(ActionMappingactionMapping,HttpServletRequesthttpServletRequest){
}
}


第四步:创建数据库操纵对象(完成对表的增删修正与查询)

packagemystruts;

importjava.sql.*;
importConnectionPool.*;
importjava.util.*;

publicclassuserdao{
getDbConnectiondb=null;
Connectioncon=null;

publicuserdao(){
}
//-------------------------------------------------------------------
publicvoiduserInsert(userActionFormuaf1)
{
db=newgetDbConnection();
con=db.getCon();
userActionFormuaf=uaf1;
PreparedStatementps=null;
Stringsql="insertintomyuser(user_id,user_name,dep,tel)values(?,?,?,?)";
try{

ps=con.prepareStatement(sql);
ps.setString(1,uaf.getUser_id());
ps.setString(2,uaf.getUser_name());
ps.setString(3,uaf.getDep());
ps.setString(4,uaf.getTel());
ps.executeUpdate();
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
}
//---------------------------------------------
publicvoiduserUpdate(userActionFormuaf1)
{
db=newgetDbConnection();
con=db.getCon();
userActionFormuaf=uaf1;
PreparedStatementps=null;
Stringsql="updatemyusersetuser_name=?,dep=?,tel=?whereuser_id=?";
try{

ps=con.prepareStatement(sql);
ps.setString(1,uaf.getUser_name());
ps.setString(2,uaf.getDep());
ps.setString(3,uaf.getTel());
ps.setString(4,uaf.getUser_id());
ps.executeUpdate();
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
}
//---------------------------------------------
publicuserActionFormgetUser(Stringkey)
{
db=newgetDbConnection();
con=db.getCon();
ResultSetrs=null;
userActionFormuaf=newuserActionForm();
PreparedStatementps=null;
Stringsql="select*frommyuserwhereuser_id=?";
try{
ps=con.prepareStatement(sql);
ps.setString(1,key.trim());
rs=ps.executeQuery();
if(rs.next())
{
uaf.setUser_id(rs.getString("user_id"));
uaf.setUser_name(rs.getString("user_name"));
uaf.setDep(rs.getString("dep"));
uaf.setTel(rs.getString("tel"));
uaf.setAction("edit");
}
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
System.out.println("mod"+key);
returnuaf;
}
//----------------------------------------
publicvoiddelUser(Stringkey)
{
db=newgetDbConnection();
con=db.getCon();
PreparedStatementps=null;
Stringsql="deletefrommyuserwhereuser_id=?";
try{
ps=con.prepareStatement(sql);
ps.setString(1,key.trim());
ps.executeUpdate();
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
System.out.println("del"+key);
}
//----------------------------------
publicCollectiongetAlluser()
{
db=newgetDbConnection();
con=db.getCon();
ResultSetrs=null;
userActionFormuaf=newuserActionForm();
PreparedStatementps=null;

ArrayListrslist=newArrayList();

Stringsql="select*frommyuseru,mydepdwhereu.dep=d.dep_id";
try{
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next())
{
HashMaprscol=newHashMap();
rscol.put("user_id",rs.getString("user_id"));
rscol.put("user_name",rs.getString("user_name"));
rscol.put("dep",rs.getString("dep"));
rscol.put("dep_name",rs.getString("dep_name"));
rscol.put("tel",rs.getString("tel"));
rslist.add(rscol);
}
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
returnrslist;
}
//----------------------------------
}

第五步:创建Action(userAction.java)

这里我们将建产两个Action.

userAction.java将完成以下事情.
1.增加(后期数据筹办.主是提取部门材料.并传送给adduser.jsp)
2.修正(后期数据筹办)
3.删除
4.检察一切用户材料.

user1Action.java将完成以下事情
1.增加用户(对myuser表操纵)
2.修正用户(对myuser表操纵)

packagemystruts;

importorg.apache.struts.action.*;
importjavax.servlet.http.*;
importmystruts.*;
importjava.util.*;
importjava.sql.*;
importConnectionPool.*;

publicclassuserActionextendsAction{
publicActionForwardexecute(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsException
{
userdaodao=newuserdao();
HttpServletRequestrequest=httpServletRequest;
Stringaction;
if(request.getParameter("action").equals("")||request.getParameter("action")==null)
{
action="add";
}
else
{
action=request.getParameter("action");
}
if(action.equals("add"))
{
request.setAttribute("dep",this.getDep());
return(actionMapping.findForward("add"));
}
if(action.equals("edit"))
{
Stringkey=request.getParameter("key");
request.setAttribute("dep",this.getDep());
request.setAttribute("userActionForm",dao.getUser(key));
return(actionMapping.findForward("add"));
}
if(action.equals("del"))
{
Stringkey=request.getParameter("key");
dao.delUser(key);
return(actionMapping.findForward("delview"));
}
if(action.equals("view"))
{
request.setAttribute("rs",dao.getAlluser());
return(actionMapping.findForward("view"));
}

returnnull;
}
//---------------------------------------------
publicCollectiongetDep()
{
getDbConnectiondb=newgetDbConnection();
Connectioncon=db.getCon();
ResultSetrs=null;

PreparedStatementps=null;

ArrayListrslist=newArrayList();

Stringsql="select*frommydep";
try{
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next())
{
HashMaprscol=newHashMap();
rscol.put("id",rs.getString("dep_id"));
rscol.put("name1",rs.getString("dep_name"));
rslist.add(rscol);
}
}
catch(SQLExceptione)
{
System.out.println("sqlerror");
}
finally
{
try{
con.close();
db.d_close();
}
catch(Exceptione){}
}
returnrslist;
}
}



packagemystruts;

importorg.apache.struts.action.*;
importjavax.servlet.http.*;

publicclassuser1ActionextendsAction{
publicActionForwardexecute(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsException
{
userActionFormuaf=(userActionForm)actionForm;
if(uaf.getAction().equals("add"))
{
newuserdao().userInsert(uaf);
return(actionMapping.findForward("view"));
}
if(uaf.getAction().equals("edit"))
{
newuserdao().userUpdate(uaf);
return(actionMapping.findForward("view"));
}
returnnull;
}
}


第六步:创建JSP视图页面(次要有两个jsp文件.增加页面.adduser.jsp检察页面viewuser.jsp)

adduser.jsp

<%@tagliburi="/WEB-INF/struts-logic.tld"prefix="logic"%>
<%@tagliburi="/WEB-INF/struts-template.tld"prefix="template"%>
<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>
<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<html:html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>
adduser
</title>
</head>
<body>
<h1></h1>
<p>
<html:formaction="/user1Action.do"method="POST">
<html:hiddenproperty="action"/>
<br>
部门:
<html:selectproperty="dep">
<html:optionscollection="dep"property="id"labelProperty="name1"/>
</html:select>
<br>
ID:
<logic:equalname="userActionForm"property="action"scope="request"value="add">
<html:textproperty="user_id"/>
</logic:equal>
<logic:equalname="userActionForm"property="action"scope="request"value="edit">
<html:textproperty="user_id"readonly="true"/>
</logic:equal>
<br>
名字:<html:textproperty="user_name"/>
<br>
德律风:<html:textproperty="tel"/>
<br>
<html:submitproperty="submit"value="Submit"/><br>
<html:resetvalue="Reset"/>
</html:form>
</body>
</html:html>

viewuser.jsp

<%@tagliburi="/WEB-INF/struts-logic.tld"prefix="logic"%>
<%@tagliburi="/WEB-INF/struts-template.tld"prefix="template"%>
<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>
<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>
<%@pagecontentType="text/html;charset=GBK"%>
<html:html>
<head>
<title>
viewuser
</title>
</head>
<body>
<divalign="center"><ahref="userAction.do?action=add">add</a></div>
<tablewidth="60%"border="1"align="center">
<trbgcolor="#CCCCCC">
<td>ID</td>
<td>user_name</td>
<td>dep</td>
<td>tel</td>
<td>modify</td>
<td>del</td>
</tr>
<logic:iteratename="rs"id="user"scope="request"type="java.util.HashMap">
<tr>
<td><bean:writename="user"property="user_id"/></td>
<td><bean:writename="user"property="user_name"/></td>
<td><bean:writename="user"property="dep_name"/></td>
<td><bean:writename="user"property="tel"/></td>
<td><ahref="userAction.do?action=edit&key=<bean:writename="user"property="user_id"/>">modify</a></td>
<td><ahref="userAction.do?action=del&key=<bean:writename="user"property="user_id"/>">del</a></td>
</tr>
</logic:iterate>
</table>
</body>
</html:html>

建产一个转向页面(index.jsp)
<%@pagecontentType="text/html;charset=gb2312"%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>

<body>
<%response.sendRedirect("userAction.do?action=view");%>
</body>
</html>

递七步:创建struts设置文件(WEB-INF/config-struts.xml)

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-beanname="userActionForm"type="mystruts.userActionForm"/>
</form-beans>
<action-mappings>
<actiontype="mystruts.userAction"scope="request"path="/userAction">
<forwardname="view"path="/viewuser.jsp"/>
<forwardname="add"path="/adduser.jsp"/>
<forwardname="delview"path="/userAction.do?action=view"/>
</action>
<actionname="userActionForm"type="mystruts.user1Action"scope="request"path="/user1Action">
<forwardname="view"path="/userAction.do?action=view"/>
</action>
</action-mappings>
</struts-config>

运转程序:
启动tomcat
启动IE在地点栏中输出:http://localhost:8080/mystruts

OK.....
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-21 10:16:23 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
兰色精灵 该用户已被删除
板凳
发表于 2015-1-30 14:54:18 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
小女巫 该用户已被删除
地板
发表于 2015-1-31 21:51:21 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
若天明 该用户已被删除
5#
发表于 2015-2-1 10:18:19 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
admin 该用户已被删除
6#
发表于 2015-2-6 04:19:41 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
不帅 该用户已被删除
7#
发表于 2015-2-11 07:02:38 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
飘飘悠悠 该用户已被删除
8#
发表于 2015-2-20 14:29:13 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
海妖 该用户已被删除
9#
发表于 2015-2-25 06:23:50 | 只看该作者
是一种突破用户端机器环境和CPU
深爱那片海 该用户已被删除
10#
发表于 2015-3-3 02:20:43 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
分手快乐 该用户已被删除
11#
发表于 2015-3-11 08:43:25 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
飘灵儿 该用户已被删除
12#
 楼主| 发表于 2015-3-11 09:05:41 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
小妖女 该用户已被删除
13#
发表于 2015-3-15 07:43:21 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
若相依 该用户已被删除
14#
发表于 2015-3-22 03:09:12 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
精灵巫婆 该用户已被删除
15#
发表于 2015-3-27 16:08:31 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
谁可相欹 该用户已被删除
16#
发表于 2015-4-1 05:10:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
第二个灵魂 该用户已被删除
17#
发表于 2015-4-1 17:11:18 | 只看该作者
是一种使用者不需花费很多时间学习的语言
只想知道 该用户已被删除
18#
发表于 2015-4-1 18:10:16 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
老尸 该用户已被删除
19#
发表于 2015-4-1 20:18:22 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
变相怪杰 该用户已被删除
20#
发表于 2015-4-12 10:23:40 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 20:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表