2013—01—11
从昨天下午到今天下午运行“导出”功能纠错时候遇到的一些主要问题
一:struts的用法
今天在做导出功能的时候遇到了以前没有遇到的问题,错误提示也没有遇到过,忘记错误提示是什么了
之后问老师,老师说这个问题是和struts的配置有关的
下面是搜到的struts的用法,先记下来,以后在深入学习了JAVA后再来理解这些
下面简单列一下系统加入struts的步骤:
1、引入struts框架……【提示:myeclipse中很方便的就能加入】
第一步后的结果:系统加入了struts包、struts的配置文件(struts-config.xml)和资源文件(Application.properties)以及struts的各类tld文件(用于View层的标签库)
2、新建继承struts中的org.apache.struts.action.Action或者DispatchAction的action类,用于实现你的业务逻辑。程序入口必须是public ActionForward execute(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {}方法。
3、新建jsp页面,用于显示后台取得的数据【提示:如果使用struts标签,那么须将struts中的tld文件引入到页面中】
4、修改struts-config.xml文件,添加一个<action></action>将处理业务逻辑的action类和用于显示的jsp页面关联起来,并约定参数接收方式(formbean的约定)
[例子] <action path="/mmslog" scope="request" name="LogForm"
type="net.bingosoft.modules.log.MMSLogAction">
<forward name="mmslog" path="/html/modules/log/mmslog_list.jsp" />
</action>
[说明]name="LogForm"需在配置文件的<form-beans></form-beans>中进行声明
[例子]<form-beans>
<form-bean name="LogForm" type="net.bingosoft.modules.log.LogForm"></form-bean>
</form-beans>
简单的配置过程就是这样,其实想明白了就感觉超级简单……主要是熟悉struts中的通用函数需要花比较多的时间,最常用的是验证……这个就留给大家慢慢琢磨吧……我也不是很熟悉。现在公司里面用struts就是为了实现mvc,表面上看就只是用配置文件做了一个跳转而已……其他的东东都不用!
二:昨天博客里面提出的遗留问题(来源于网络)
1:import的内容和include的内容有什么区别 ?
import一般是用来导入某些库文件,如dll
而#include是预编译包含文件,使用#include包含的头文件相当于把那个文件的全部内容复制到目标文件
include就是包含,相当于include的文件里的内容都包含进去了
C#的using和java的import只是定义了命名空间。可以在程序里变通的实现
2:C语言中define命令
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。
#define命令剖析
#define的概念
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1) 简单的宏定义:
#define <宏名> <字符串>
例: #define PI 3.1415926
(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define A(x) x
一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。
3:package的一些问题
package是什么
package好比java用来组织文件的一种虚拟文件系统。package把源代码.java文件,.class文件和其他文件有条理的进行一个组织,以供java来使用。package是将文件组织在一颗类似unix,linux文件系统的树结构里面,它有一个根"/",然后从根开始有目录和文件,目录中也还有文件和目录。
package怎么实现的呢?
源代码的要求最严格,而一旦源代码自己声明了在哪个package路径之下,class也就有了自己在哪个package下面的信息,就是那句程序开头的"package xx.xx.xx"。有人问,为什么要有这个信息,直接放目录结构里不就好了么?是啊,直接放目录中确实可以找到.class和.java,但是如果我要输出这个.class是属于哪个package的,该怎么办?所以我们需要在.class里面留一个package的信息。如果我们要区分同样名称为A.class的类怎么办?所以我们需要在.class里面留一个package的信息。
.java文件是一个独立的编译单元,类似c++里面的cpp文件,但是它不需要.h文件,只要.java就足够了,一个.java文件里面可以包含一个public的类,若干package类(package类特征是没有任何访问控制修饰),还有内隐类的话,则还可以包含若干protected和private的类。每个类,都会在编译的时候生成一个独立的.class文件,所以.java和.class不是一对一,而是一对多的关系,不过.java和public的类是一对一的。所有这些.class,都由这个.java开头的package语句来确定自己在package中的位置。
4:关于昨天import的一些内容
import干吗用的?
import只是一种让你偷点懒少打字的方法,绝对不会影响你的classpath,这点你要好好记住,没有非用import不可的理由,用了import也不会起到类似c里面嵌入某文件内容的效果,它只是一种省事的办法。不在classpath中的class,任你再import也无济于事。
如果不用import,用ArrayList这个类,就需要写
java.util.ArrayList。
而用了import java.util.ArrayList;的话
以后代码中写ArrayList就可以了,省事。import可以使用通配符*,*代表某package下所有的class,不包括子目录。
import java.awt.*
不等于
import java.awt.*
import java.awt.event.*
如果要简写java.awt.event下和java.awt下的类,不能偷懒,两个都要import。
三:体会心得
今天主要是在修改导出功能的一些错误,大体的流程老师在昨天已经讲过了,主要的问题还是在实际操作的过程中遇到问题和错误的时候怎么样修改错误。因为有些原理我们还是不太清楚,所以在修改错误的时候就会显得比较被动,不过这样也有好处,可以锻炼我们的纠错能力。以前的时候总是害怕出错,经过昨天下午和今天一天的锻炼,我已经不害怕纠错了,不像以前看到红色的错误提示就心里慌张。其实,在运行代码的时候应该担心的不是会有错误提示,而是运行有错误但是在编译的时候没有错误提示,那样就比较棘手了,需要全盘的考虑,一点一点的找出来。
下午的时候,陈老师讲了JAVA的一些语法结构,听起来和C++的很相似,之前学习过一些C++的知识,所以听起来并不是那么吃力,可是在自己动手去写的时候却错误一大堆,还是自己的动手能力太差劲了,在接下来的时间里需要多多动手去写代码
浙公网安备 33010602011771号