共 150篇 前 10 页: 10    每页10篇 上一页   下一页  

自荐文章

                                    天气暖了,春天来了,难道已经是最后的一个学期了......等等......适应适应我先...
早上起床,来到食堂:"来个铁饼"
                   "什么饼"
                   "恩?哦? 来个芝麻铁饼"
                   ......
寝室同学激动地说:这饼用来砸"狗",都能砸死"人"....
学校的食堂的大师傅换了,现在是面没面味,鱼没鱼味.忍着...我先/.
什么时候,等我有时间了,找个好地,吃饭要两份,吃一份,看一份,充分享受秀色可餐.
现在...我#$$^%先忍着.....
      
      
      
air_tuyh   2006-03-31 19:26:36 阅读:216  评论:1  引用:0
                                                            
     小的时候对拥有艺术天分的人很是崇敬.觉得那是一种与生俱来的东西很了不起.

     唯一一次和艺术搭上一点边是在我11岁读初一的时候.那时我参加江西省的书画摄影比赛,把作品提交上去后也就把这事忘了,一个月后却意外的拿了个三等奖,获奖作品在藤王阁展出.当时就觉得自己牛得不行,心想全江西才几个,全南昌市才几个呀,觉得自己就什么都能干了.

     师傅是学校的书法老师,年事很高,只有一条腿.按照规定以他的年龄本是早可以退休了的,但他选择继续在学校义务任教,我对他的印象至今很深.记得他有一次说我长大了以后在社会上会很吃的开,呵呵,其实我现在一直觉得我在与人相处方面存在问题.有的人我无论怎样都没办法.自己在这方面还是缺少点智慧.

     我也有思考原因,后来我的一个同学给了个结论:第一点我属于那种很容易搞定的人,简言之:好说话,所以别人会不把你放在眼里,而且很容易被认为是没有主见;第二点我的外形气势方面给人很强烈的压迫感,觉得我很强大.冤枉呀,其实我很脆弱了.于是呼,现在遇人面带微笑,至少让人觉得我不是你的敌人,我很友善.

     一直觉得这两点是自相矛盾的呀,但是大师开口,不信也得信,呵呵.
      
      
            
      
air_tuyh   2006-03-26 19:05:20 阅读:238  评论:2  引用:0
                            
看了老徐的《爱的能力》很有些同感
觉得自己也属于没有安全感,总怕会突然失去某个人,某样东西的人。
而且有些东西从来都未曾是自己的,更谈不上失去了。


      
air_tuyh   2006-03-24 21:20:44 阅读:295  评论:0  引用:0
〖摘要:〗
jsp操作文件:读取文件和写入文件,下面分别介绍一.读取文件,二.写入文件

一。读取文件
1。使用ServletContext,只能读取Servlet上下文中的文件。
2。java.io.FileReader对象,可以读取任何位置的文件。
下面我们介绍两种方式的编码:

1。使用ServletContext,只能读取Servlet上下文中的文件。
在ServletContext接口中定义了java.io.InputStream ,getsourceAsStream(java.lang.String path)来访问给定的资源。使用了InputStream对象后对字符要进行重新编码。请看下面的readFile.jsp文件。



readFile.jsp
<%@ page contentType="text/html; charset=gb2312" import="java.io.*"%>

<%
try
{
//使用ServletContext装入文件资源
InputStream in=getServletContext().getResourceAsStream(
"/file.txt");//获取给定的资源
String file=
"";
int temp=0;
while((temp=in.read())!=-1)
{
file+=(char)temp;
}
//关闭输入流。
in.close();
out.println(new String(file.getBytes(
"iso-8859-1"))); //重新编码
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>
<------------------------->
为提高速度,减少占用资源,避免出现中文问题,我们使用带缓冲的输入流来读取文件资源。让我们来看readFile2.jsp文件


readFile2.jsp
<%@ page contentType=
"text/html; charset=gb2312" import="java.io.*" buffer="64kb"%>
<%
try
{
InputStream in=getServletContext().getResourceAsStream(
"/file.txt");
String file=
"";
String temp=
"";

BufferedReader buffer=new BufferedReader(new InputStreamReader(new BufferedInputStream(in)));
while((temp=buffer.readLine())!=null)
{
file+=temp;
}
buffer.close();
in.close();
out.println(file);
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>


-------------------------------------------------------------------------------------------------
2。使用java.io.FileReader对象,可以读取任何位置的文件。

<%@ page contentType=
"text/html; charset=gb2312" import="java.io.*" buffer="64kb"%>
<%
try
{
BufferedReader in=new BufferedReader(new FileReader(
"c:\\UserSession.java"));
String file=
"";
String temp=
"";
while((temp=in.readLine())!=null)
{
file+=temp;
}
in.close();
out.println(file);
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>




二.写入文件
1。使用java.io.FileReader对象
2。使用FileOutputStream
下面让我们来看代码:
<%@ page contentType=
"text/html; charset=gb2312" import="java.io.*"%>
<html>
<body>
<%
request.setCharacterEncoding(
<
继续阅读其余的  1339 字
air_tuyh   2005-10-09 18:52:49 阅读:2119  评论:0  引用:0
〖摘要:〗
servlet上下文监听

servlet上下文:在服务器上使用Session对象来维持同单一客户相关的状态,为多个用户的Web应用维持一个状态时使用Servlet环境(Context).
常用方法:getAttribute(Stringname),getContext(Stringuripath),removeAttribute(String name),setAttribute(String name,Object object)


监听ServletContext的信息:
实现ServletContextListener,ServletContextAttributeListener接口,以便可以监听ServletContext创建,销毁以及它的属性的变化的信息。并且通过private void logout(String message)方法把信息打印到c:\\test.txt文件中。

ServletContext初始化是在服务器启动时,销毁在关闭时。


下面让我们来看以下MyServletContextListener.java这个程序来深入了解以上的知识点。



package com.jspdev.ch8;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import java.io.*;


public final class MyServletContextListener
implements ServletContextListener,ServletContextAttributeListener {

private ServletContext context = null;

/**
*以下代码实现ServletContextListener接口。
*/

public void contextDestroyed(ServletContextEvent sce) {

logout(
"contextDestroyed()-->ServletContext被销毁");
this.context = null;

}

public void contextInitialized(ServletContextEvent sce) {

this.context = sce.getServletContext();
logout(
"contextInitialized()-->ServletContext初始化了");

}
//ServletContextListener

/**
*以下代码实现 ServletContextAttributeListener接口
*/

public void attributeAdded(ServletContextAttributeEvent scae) {

logout(
"增加了一个ServletContext属性:attributeAdded('" + scae.getName() + "', '" +
scae.getValue() +
"')");

}

public void attributeRemoved(ServletContextAttributeEvent scae) {

logout(
"删除了一个ServletContext属性:attributeRemoved('" + scae.getName() + "', '" +
scae.getValue() +
"')");

}


public void attributeReplaced(ServletContextAttributeEvent scae) {

logout(
"某个ServletContext的属性被改变:attributeReplaced('" + scae.getName() + "', '" +
scae.getValue() +
"')");

}

private void logout(String message) {

PrintWriter out=null;
try
{
out=new PrintWriter(new FileOutputStream(
"c:\\test.txt",true));
out.println(new java.util.Date().toLocaleString()+
"::Form ContextListener: " + message);
out.close();
}
catch(Exception e)
{
out.close();
e.printStackTrace();
}

}

}





<--------------------------------------->
部署这个监听器
web.xml

<web-app>
<li
继续阅读其余的  1826 字
air_tuyh   2005-09-21 21:41:18 阅读:2912  评论:4  引用:0
jsp中错误处理页面


举例说明:mustBeError.jsp
<%@ page contentType=
"text/html; charset=gb2312"
language=
"java" import="java.sql.*,javax.servlet.*,javax.servlet.http.*" errorPage="error.jsp" %>
<%
//这个页面一定会出错。
int i=0;
int j=1;
out.println(j/i);
%>


在此中通过errorPage=
"error.jsp"来指定出错时错误处理页面


<--------------------------->
error.jsp

<%@ page contentType=
"text/html; charset=gb2312" language="java" isErrorPage="true" import="java.io.*"%>
<html>
<head>
<title>出错了!</title>
<meta http-equiv=
"Content-Type" content="text/html; charset=gb2312">
</head>
<body>
出错了!<br>
发生了以下的错误:
<br><hr><font color=red><hr>
getMessage():<br>
<%=exception.getMessage()%><br><hr>
getLocalizedMessage():<br>
<%=exception.getLocalizedMessage()%><br><hr>
PrintStatckTrace():<br>
<%
StringWriter sw=new StringWriter();
PrintWriter pw=new PrintWriter(sw);
exception.printStackTrace(pw);
out.println(sw);
%><br>
</font></body>
</html>


在error.jsp中,page指令中指定:isErrorPage=
"true"

<---------------------->
在web.xml中声明异常和错误页面

例如:
<?xml version=
"1.0" encoding="ISO-8859-1"?>

<web-app xmlns=
"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version=
"2.4">
<error-page>
<error-code>404</error-code>
<location>/pageNotFound.html</location>
</error-page>

<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/NumberFormatException.html</location>
</error-page>

</web-app>

说明:指定错误代码为404是,调用/pageNotFound.html
也可以指定错误类型如:java.lang.NumberFormatException,出现此错误类型是调用/NumberFormatException.html

air_tuyh   2005-09-17 21:35:24 阅读:4197  评论:1  引用:0
〖摘要:〗
JSP中<jsp:setProperty>,<jsp:getProperty>,<jsp:useBean>的使用简单事例。


包括:TestBean.java register.jsp register.html
说明:register.jsp register.html放入 tomcat安装目录\tomcat\webapps\ch3

TestBean.java编译后的class文件放入 tomcat安装目\tomcat\webapps\ch3\WEB-INF\classes\com\jspdev\ch3


三个元素的具体使用很容易理解但是却不好用文字解说,在这我就不具体说明了。通过实际操作事例后具体分析就可明白。


<----------------------------->

register.html

<html>
<body>
用户信息注册:<br><hr>
<form method=
"get" action="register.jsp">
<table>
<tr><td>姓名:<input name=
"userName" type="text"></td></tr>
<tr><td>密码:<input name=
"password" type="password"></td></tr>
<tr><td>年龄:<input name=
"age" type="text"></td></tr>
<tr><td><input type=submit value=
"submit"></td></tr>
</table>
</form>
</body>
</html>

<----------------------------------------------------->

register.jsp


<%@ page contentType=
"text/html;charset=gb2312"%>
<jsp:useBean id=
"user" scope="page" class="com.jspdev.ch3.TestBean"/>
<jsp:setProperty name=
"user" property="userName" value="UserName"/>
<jsp:setProperty name=
"user" property="password" param="password"/>
<jsp:setProperty name=
"user" property="age" param="age"/>
<html>
<body>
注册成功:<br>
<hr>
使用bean属性方法:<br>
用户名:<%=user.getUserName() %><br>
密码:<%=user.getPassword() %><br>
年龄:<%=user.getAge()%><br>
<hr>
使用getProperty:<br>
用户名:<jsp:getProperty name=
"user" property="userName"/><br>
密码:<jsp:getProperty name=
"user" property="password"/><br>
年龄:<jsp:getProperty name=
"user" property="age"/><br>
</body>
</html>



<------------------------------------------------>

TestBean.java


package com.jspdev.ch3;

public class TestBean
{
public String userName;
public String password;
public int age;

public void setUserName(String name)
{
this.userName=name;
}
public void setPassword(String password)

{
this.password=password;
}
public
继续阅读其余的  697 字
air_tuyh   2005-09-09 18:53:44 阅读:2245  评论:0  引用:0
                                               今天是考试的第一天,在复习的时候想了点东西.    来卓达也快三年了,没干出什么让自己觉得很棒的事。虽然从学校学委会的宣传部部长干到班级班长在到后来的学习委员.      学习委员这个位置是我自己干的最不满意的。自己的学习成绩先不说,在班上没有起到带头作用,自己不曾为营造良好的班级学习氛围而努力.    在我的周围出现过,而且现在仍然存在一些很不错的人。他们认为我不错我,然后认识了我,和为了朋友,然后发现我没有他们期望的那么棒,然后失望了,然后是离开。虽然对于自身的塑造我从没间断过 .    
      
air_tuyh   2005-06-16 19:05:25 阅读:2543  评论:0  引用:0
极限编程与敏捷开发
徐景周



在按照我的理解方式审查了软件开发的生命周期后,我得出一个结论:实际上满足工程设计标准的惟一软件文档,就是源代码清单。

-- Jack Reeves

简介

2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发(Feature Driven Development,简称FDD),自适应软件开发(Adaptive Software Development,简称ASD),以及最重要的极限编程(eXtreme Programming,简称XP)。极限编程(XP)是于1998年由Smalltalk社群中的大师级人物Kent Beck首先倡导的。



极限编程

设计和编程都是人的活动。忘记这一点,将会失去一切。

-- Bjarne Stroustrup



极限编程(XP)是敏捷方法中最箸名的一个。它是由一系列简单却互相依赖的实践组成。这些实践结合在一起形成了一个胜于部分结合的整体。

下面是极限编程的有效实践:

1、完整团队

XP项目的所有参与者(开发人员、客户、测试人员等)一起工作在一个开放的场所中,他们是同一个团队的成员。这个场所的墙壁上随意悬挂着大幅的、显著的图表以及其他一些显示他们进度的东西。

2、计划游戏

计划是持续的、循序渐进的。每2周,开发人员就为下2周估算候选特性的成本,而客户则根据成本和商务价值来选择要实现的特性。

3、客户测试

作为选择每个所期望的特性的一部分,客户可以根据脚本语言来定义出自动验收测试来表明该特性可以工作。

4、简单设计

团队保持设计恰好和当前的系统功能相匹配。它通过了所有的测试,不包含任何重复,表达出了编写者想表达的所有东西,并且包含尽可能少的代码。

5、结对编程

所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的。

6、测试驱动开发

编写单元测试是一个验证行为,更是一个设计行为。同样,它更是一种编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功功能能验证方面的反馈循环。程序员以非常短的循环周期工作,他们先增加一个失败的测试,然后使之通过。

7、改进设计

随时利用重构方法改进已经腐化的代码,保持代码尽可能的干净、具有表达力。

8、持续集成

团队总是使系统完整地被集成。一个人拆入(Check in)后,其它所有人责任代码集成。

9、集体代码所有权

任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。

10、编码标准

系统中所有的代码看起来就好像是被单独一人编写的。

11、隐喻

将整个系统联系在一起的全局视图;它是系统的未来影像,是它使得所有单独模块的位置和外观变得明显直观。如果模块的外观与整个隐喻不符,那么你就知道该模块是错误的。

12、可持续的速度

团队只有持久才有获胜的希望。他们以能够长期维持的速度努力工作,他们保存精力,他们把项目看作是马拉松长跑,而不是全速短跑。

极限编程是一组简单、具体的实践,这些实践结合在形成了一个敏捷开发过程。极限编程是一种优良的、通用的软件开发方法,项目团队可以拿来直接采用,也可以增加一些实践,或者对其中的一些实践进行修改后再采用。



敏捷开发

人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

-- Tom DeMacro和Timothy Lister



敏捷软件开发宣言:

n 个体和交互 胜过 过程和工具

n 可以工作的软件 胜过 面面俱到的文档

n 客户合作 胜过 合同谈判

n 响应变化 胜过 遵循计划

虽然右项也有价值,但是我们认为左项具有更大的价值。



敏捷宣言遵循的原则:

n 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

n 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

n 经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

n 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

n 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

n 在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

n 工作的软件是首要的进度度量标准。

n 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

n 不断地关注优秀的技能和好的设计会增强敏捷能力。

n 简单是最根本的。

n 最好的构架、需求和设计出于自组织团队。

n 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。



当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。

n 僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

n 脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

n 牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

n 粘滞性: 做正确的事情比做错误的事情要困难。

n 不必要的复杂性: 设计中包含有不具任何直接好处的基础结构。

n 不必要的重复性: 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。

n 晦涩性: 很难阅读、理解。没有很好地表现出意图。



敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。

为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:

n 单一职责原则(SRP)

就一个类而言,应该仅有一个引起它变化的原因。

n 开放-封闭原则(OCP)

软件实体应该是可以扩展的,但是不可修改。

n Liskov替换原则(LSP)

子类型必须能够替换掉它们的基类型。

n 依赖倒置原则(DIP)

抽象不应该依赖于细节。细节应该依赖于抽象。

n 接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

n 重用发布等价原则(REP)

重用的粒度就是发布的粒度。

n 共同封闭原则(CCP)

包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

n 共同重用原则(CRP)

一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

n 无环依赖原则(ADP)

在包的依赖关系图中不允许存在环。

n 稳定依赖原则(SDP)

朝着稳定的方向进行依赖。

n 稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致。

上述中的包的概念是:包可以用作包容一组类的容器,通过把类组织成包,我们可以在更高层次的抽象上来理解设计,我们也可以通过包来管理软件的开发和发布。目的就是根据一些原则对应用程序中的类进行划分,然后把那些划分后的类分配到包中。

air_tuyh   2005-06-13 20:18:46 阅读:4093  评论:0  引用:0
MVC:即模式,视图,控制器层简化用户开发进程。存在许多MVC的变体来适合不同的场景。而其中
对Web应用最使用的是Model2.

模型层
1.暴露被应用的封装的数据
2.允许业务逻辑在模型上完成

存在多种程序样式来建立模型,其中可使用Java对象来建立模型,这些对象是最简单也是最灵活的。


开发模型两个重要的设计特点:
1.系统所需的的全部交互和数据必须通过模型被暴露。
2.保持模型不可见,可以在任何类型的用户界面中使用它。

视图层
1.从模型中读数据并向用户展现它,不应该处理用户输入的验证或对模型进行修改。
2.不包含业务逻辑,但应包含描述逻辑。


控制层
响应用户输入,操作模型决定那个视图被显示。
在Model2中,控制层被分为若干个活动。每个活动代表用户想去完成的任务。
air_tuyh   2005-05-29 16:20:49 阅读:2992  评论:0  引用:0
Copyright@2008 powered by YuLog