JSF与Struts对比

我的一个客户不知道该选用Struts还是JSF。就像你预料的那样,我通常会问:这2中框架之间有什么区别?当然,除了我的这个客户外很多人都面临这样的选择。

总的来说,我建议在新项目中优先考虑JSF。虽然常常有一些商业上的因素迫使我们为现有的项目选择了Struts,而且那些解决方案还有待考验,但是,让我们面对一个事实:JSF比Struts好多了。

下面是我选择JSF而不选Struts的十大理由:
1.Components(组件)
2.Render Kits
3.Renderers
4.Value Binding Expressions(值绑定表达式)
5.Event Model(事件模型)
6.Extensibility(可扩展性)
7.Managed Beans(Dependency Injection 依赖注入)
8.POJO Action Methods
9.JSF is the standard Java-based web app framework (JSF是java web应用程序的标准框架)

Tomcat下中文的解决途径

(一)JSP页面上是中文,但是看的时候是乱码:

解决的办法就是在JSP页面的编码的地方

< %@ page language="java" contentType="text/html;charset=GBK" %>, 

因为Jsp转成Java文件时的编码问题,默认的话有的服务器是ISO-8859-1,如果一个JSP中直接输入了中文,Jsp把它当作ISO8859-1来处理是肯定有问题的,这一点,我们可以通过查看Jasper所生成的Java中间文件来确认。

(二)当用Request对象获取客户提交的汉字代码的时候,会出现乱码:

解决的办法是:要配置一个filter,也就是一个Servelet的过滤器,代码如下:

[code]
import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

编写高级JScript代码步骤

1、创建高级对象

使用构造函数来创建对象

构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。

var myObject = new Object(); // 创建没有属性的通用对象。 

var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。 

var myCar = new Car(); // 创建一个用户定义的对象,并初始化其属性。 

通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值)。完成后,构造函数返回它所构造的对象的一个参数。

编写构造函数

可以使用 new 运算符结合像 Object()、Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化。面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力。创建了自定义的构造函数,这样就可以创建具有已定义属性的对象。下面是自定义函数的示例(注意 this 关键字的使用)。

[code]

Spring访问和实现EJB组件的过程

作为轻量级的容器,Spring常常被认为是EJB的替代品。我们也相信,对于很多 (不一定是绝大多数)应用和用例,相对于通过EJB容器来实现相同的功能而言, Sping作为容器,加上它在事务,ORM和JDBC存取这些领域中丰富的功能支持, Spring的确是更好的选择。

不过,需要特别注意的是,使用了Spring并不是说我们就不能用EJB了, 实际上,Spring大大简化了从中访问和实现EJB组件或只实现(EJB组件)其功能的复杂性。 另外,如果通过Spring来访问EJB组件服务,以后就可以在本地EJB组件,远程EJB组件, 或者是POJO(简单Java对象)这些变体之间透明地切换服务的实现,而不需要修改 客户端的代码。

本章,我们来看看Spring是如何帮助我们访问和实现EJB组件的。尤其是在访问 无状态Session Bean(SLSBs)的时候,Spring特别有用,现在我们就由此开始讨论。

访问EJB 1.1. 概念要调用本地或远程无状态Session Bean上的方法,通常客户端的代码必须 进行JNDI查找,得到(本地或远程的)EJB Home对象,然后调用该对象的"create" 方法,才能得到实际的(本地或远程的)EJB对象。前后调用了不止一个EJB组件 上的方法。

如何运用ASP.NET是使用QueryString实现页面间值传递

 第一种方法:

  通过URL链接地址传递

send.aspx:  
protected void Button1_Click(object sender, EventArgs e)    
{Request.Redirect("Default2.aspx?username=honge");    } 
receive.aspx: string username = Request.QueryString["username"];这样可以得到参数值。 

  第二种方法:

  通过post方式。

send.aspx                
receive.aspxstring username = Ruquest.Form["receive"]; 

  第三种方法:

  通过session
[code]
send.aspx:
protected void Button1_Click(object sender, EventArgs e)
{Session["username"] = "honge";
Request.Redirect("Default2.aspx"); }

JSP基本语法的说明

JSP编译器指引与指令元件有五种型态.在JSP 1.0之后,大部分的JSP是包含在以作为结束的单一标签里.新的 JSP 1.1规格已经发表了,它同时也与XML相容.

五种JSP的编译器指引如下所示:

1 编译器指引

2 预定义

3 运算式

4 程序代码

5 注解

下面我们分析一个简单的 JSP 页面。您可以在 JSWDK 的 examples 目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为 .jsp 。从下面的代码清单中可以看到, JSP 页面除了比普通 HTML 页面多一些 Java 代码外,两者具有基本相同的结构。 Java 代码是通过 符号加入到 HTML 代码中间的,它的主要功能是生成并显示一个从 0 到 9 的字符串。在这个字符串的前面和后面都是一些通过 HTML 代码输出的文本。

JSP 页面

str = str + i;

} %>

Spring是如何帮助我们访问和实现EJB组件的

作为轻量级的容器,Spring常常被认为是EJB的替代品。我们也相信,对于很多 (不一定是绝大多数)应用和用例,相对于通过EJB容器来实现相同的功能而言, Sping作为容器,加上它在事务,ORM和JDBC存取这些领域中丰富的功能支持, Spring的确是更好的选择。

不过,需要特别注意的是,使用了Spring并不是说我们就不能用EJB了, 实际上,Spring大大简化了从中访问和实现EJB组件或只实现(EJB组件)其功能的复杂性。 另外,如果通过Spring来访问EJB组件服务,以后就可以在本地EJB组件,远程EJB组件, 或者是POJO(简单Java对象)这些变体之间透明地切换服务的实现,而不需要修改 客户端的代码。

本章,我们来看看Spring是如何帮助我们访问和实现EJB组件的。尤其是在访问 无状态Session Bean(SLSBs)的时候,Spring特别有用,现在我们就由此开始讨论。

访问EJB 1.1. 概念要调用本地或远程无状态Session Bean上的方法,通常客户端的代码必须 进行JNDI查找,得到(本地或远程的)EJB Home对象,然后调用该对象的"create" 方法,才能得到实际的(本地或远程的)EJB对象。前后调用了不止一个EJB组件 上的方法。

何为“山寨”框架

】“山寨”这个词儿现在太流行了!追根溯源也不知道是谁发明了这个词儿。不过,“山寨”这个词儿多用于实物类:比如山寨手机、山寨数码、山寨电视,就连人也有山寨的。上网浏览,“山寨”竟然和技术开发也挂上了勾。今天,在一个技术论坛里发现一篇帖子——“山寨”框架三宗罪。点击、回复的人很是不错。所以拿到这里来和大家分享!

下面是帖子原文:

刚看了个自制框架的帖子,其实之前这类帖子见得比较多,吵得也都挺厉害。好像总有人一边对提议“不要发明轮子”的同学挺反感,一边以发明家自居,把话扯到中国的软件业上去。之前还看到有人见到“只用SSH的公司“坚决不去。我想说说我的看法。

我觉得框架这东西,首先要明白为什么要用它——这是废话,但又是最重要的。真的有些人是不知道为什么用框架,乱用一通,产品代码乱七八糟。

然后是学习如何用好它,掌握框架后接着可能会发现它的不足,然后要是能够的话,再试试用用其它的框架,选一个最合适的。如果实在找不着你需要的框架了,这个时候如果公司允许,你再去改进某个框架,或者研读它的源代码参考着做个更好的。

否则,我觉得你的“发明”永远只是在你的作坊公司里用用、制造混乱而已。

如何更合理利用Java中的throw error

以前,我觉得编程语言中最让人不解的部分就是它能够创建错误。当时我对Java语言中的throw关键字的第一反应就是“啊,这也太傻了,为什么我们想要引发一个错误(error)?”我觉得错误是我的敌人,应当避免的,所以创建错误是毫无用处甚至是危险的。我认为在JavaScript中加入这样的关键字是多此一举。但随着我编程经验的丰富,我逐渐变成了throw我的error粉丝。合理的使用它们会让对代码的调试和维护大大简化。

在编程的时候,Error通常出现在不期望的事情发生时。可能是传入函数的参数值不正确,或者是运算符的操作数不合法。为此编程语言定义了一个基本的规则:当上述情况发生时,就产生一个错误来让编程人员对代码进行修复。如果这些错误不被抛出或反馈给你,那么调试程序几乎是不可能的。如果所有的错误都“悄悄地”发生,那么你很难在第一时间发现问题所在,并将其修复。因此Error是开发者的朋友,而不是敌人。

Error的问题所在是它们会在错误的时间和错误的地点发生。更糟的是,默认的错误信息通常晦涩难懂,很难解释哪里出了问题。JavaScirpt的错误信息更是不包含任何有价值的信息,而且还很隐蔽(尤其是在IE里运行时)。想象一下如果能有这样的错误提示出现“因为某件事情发生导致某个函数调用失败”,那么立刻我们的调试任务就变得简单了,这就是throw自己的error的好处。

搭建最基本的Java开发环境

必须下载的东西:

1. J2SE 1.4.1

根据自己的操作系统,在这里下载。记住自己安装的目录名称。

http://java.sun.com/j2se/1.4.1/download.html

2. J2EE 1.3.1

根据自己的操作系统,在这里下载。如果你要学习JSP, EJB,这个是不可少的。

http://java.sun.com/j2ee/sdk_1.3/1.3_01/

3. JRE (Java run time environment)

很多人问为什么 applet 不能在 IE 中运行,就是因为少这个。

http://java.sun.com/getjava/manual.html

注意:在安装其他工具以前,这几个建议全部先行安装。

下载 java 开发环境

推荐 IntelliJ Idea 3.0.2,下载地址是

http://www.intellij.com/idea/download.jsp

http://www.5956.com/view.asp?board_id=119&view_id=1425

利用Java实现简单web服务器方法介绍

在java的官方文档中有一个实现的简单的web服务器,我把他稍加润色,试一下一个简单的web服务器,源码如下:
[code]
import com.sun.net.httpserver.*;
import java.net.*;
import java.io.*;

class MyHandler implements HttpHandler
{
public void handle(HttpExchange t) throws IOException
{
//InputStream is = t.getRequestBody();

//read(is);

String response = "This is the response";
t.sendResponseHeaders(200,response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}

public class MyServer
{

在J2ME中,主要有三种方法实现多线程

我们知道,在操作系统级别上软件的运行一般都是以进程为单位,而在每个进程的运行过程中允许同时并发执行多个不同线程,这就使得一个程序能同时执行不同的操作。使用多线程的目的是为了最大限度地利用计算机CPU资源。JAVA程序字节码最终是在JVM虚拟机下运行的,同一虚拟机进程中的不同操作都是通过多线程来运行的。在JAVA虚拟机中,线程常用有单线程和多线程,单线程指程序执行过程只是一个有效操作的序列,不同操作都有着明确的先后顺序;而多线程允许同时进行着不同的操作,这些不同的操作同时并发进行着,并由CPU时钟频率根据不同的调度方式对他们进行执行调度。

在JAVA语言中提供了丰富的多线程操纵接口,提供了各类不同的线程实现方法供我们选择,功能非常强大。在手机软件设计中,由于同样需要执行网络连接(基于HTTP的高级Internet协议通讯)、UI调度等待、UI显示幻化、游戏控制等操作需要通过后台的数据运算或UI不断更新等操作。因此在J2ME中,KVM虚拟机也提供了功能强大的多线程API,使我们同样能在J2ME中实现线程的并发运算。

在J2ME中,主要有以下三种方法实现多线程。

一、继承Thread类(java.lang.Thread)

Tomcat里设置session过期时间方法介绍

由于session值之前没有设置,以至于刚登录的网站,不到一分钟就超时了,总结了一下,原来是session过期的原因,以下是设置session时间的3个方法:

1. 在tomcat——>conf——>servler.xml文件中定义:

<Context path="/test" docBase="/test"   
  defaultSessionTimeOut="3600" isWARExpanded="true"   
  isWARValidated="false" isInvokerEnabled="true"   
  isWorkDirPersistent="false"/> 
defaultSessionTimeOut="3600" 

2. 在web.xml中定义:

<session-config>   
<session-timeout>20</session-timeout>   
</session-config> 

3. 在程序中定义:

Java自身独有的特点介绍

Java语言可以说是当下最流行的开发语言了。能够脱颖而出,成为佼佼者,那是因为Java有着自身独有的特点。下面是Java的12大特色总结:

1.Java是简单的

Java与C++极为相似,但却简单得多。高级编程语言的所有特性中,不是绝对需要的都已删去了。例如,Java没有算符过载、标题文件、预处理、指针运算、结构、联合、多维数组、模板及隐式类型变换。如果你知道一点C、C++或Pascal,你很快就会驾驭Java。这里是一个简单的JavaHelloWorld程序:

publicclassHelloInternet
 {
  publicstaticvoidmain(Stringargv[])
   {
     System.out.println(“HelloIn-ternet!”)
   }
 } 

2.Java是面向对象的

Java是一种面向对象的编程语言。除了简单的类型,如数字和布尔算子之外,Java中的大部分都是对象。

正如任何面向对象的语言一样,Java代码也按类组织。每个类定义一组规定对象行为的方法。一个类可以继承另一个类的行为。在类的根层次上,通常是类对象。

提高开发水平的十大要诀

【转】在当今的IT就业市场,有人欢喜有人忧。有人对目前的工作和薪水很满意,有人目前正面临着下岗,或者已经下岗……

可能你是公司里唯一谙熟某项关键技术的高手,缺了你,公司便玩不转了;也可能你所在的公司对你现有的专业技能高枕无忧,认为你在任期内足以胜任公司给你的开发任务(当然就不会再花银子去培训你啦)。

不要告诉我你们公司对原来用VB3开发的业务处理系统很满意,而你呢,也认为自己除了用C语言开发程序以外,不会再去做别的什么事情。

你是不是对.NET和Java为争夺开发工具市场撕破脸皮而熟视无睹,你是不是对XML将要取代关系数据库而无动于衷以及不屑一顾。你是不是认为你能用汇编或C开发任何东西,所以觉得其它开发工具都不再重要……

如果真是这样,那么你离失业的日子不远了

俗话说--未雨绸缪……

想一想如果你现在失业没有工作会怎么样,

想一想现在还有如此之多的弟兄们为了找一个饭碗而四处奔波。

想一想如果现在你们公司为了抢占市场,突然要进行技术转向,你该怎么办?

想一想你现在为了自己的前途,突然需要改变技术领域,你该怎么办?或者你不满足于现在自己的知识结构,想要再充实一下,但又不知选择那些内容来学习。那么继续往下看,并一起参加讨论吧,相信会有收获的。

如何搭建JSP动态网站环境

Sun推出的JSP(Java Server Pages)是一种执行于服务器端的动态网页开发技术,它基于Java技术。执行JSP时需要在Web服务器上架设一个编译JSP网页的引擎。配置 JSP 环境可以有多种途径,但主要工作就是安装和配置Web服务器和JSP引擎。

下面就以Tomcat作为JSP引擎,配合Tomcat、Apache、IIS这三种Web服务器来讲述3种搭建JSP运行环境的方案。

一、相关软件介绍

1、 J2SDK:Java2的软件开发工具,是Java应用程序的基础。JSP是基于Java技术的,所以配置JSP环境之前必须要安装J2SDK。

2、 Apache服务器:Apache组织开发的一种常用Web服务器,提供Web服务。

Basic test for Java

1.简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。(15分)

2.下面程序运行会发生什么结果?如果有错误,如何改正? (15分)

interface  A{ 
  int x = 0; 
} 
class B{ 
  int x =1; 
} 
class C 
    extends B implements A { 
  public void pX(){ 
    System.out.println(x); 
  } 
  public static void main(String[] args) { 
    new C().pX(); 
  } 
} 
} 

3.简述 Java Server Page 和 Servlet 的联系和区别。(20分)

4.XML文档定义有几种形式?它们之间有何本质区别?

解析XML文档有哪几种方式?(20分)

5.简述synchronized和java.util.concurrent.locks.Lock的异同 ?(15分)

6.EJB规范规定EJB中禁止的操作有哪些?(15分)

最后还有一题考考你的眼力:
[code]
public String toString(){

Java概念知多少

基本概念

1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。

2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)。

3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)。

4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍。

5.对象的3个主要特性

ehavior---说明这个对象能做什么。

tate---当对象施加方法时对象的反映。

dentity---与其他相似行为对象的区分标志。

每个对象有唯一的indentity 而这3者之间相互影响。

6.类之间的关系:

use-a :依赖关系

has-a :聚合关系

Java精选试题

1. float型float f=3.4是否正确?

  答:不正确,应为float f=3.4f

2. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

  答:是引用传递。

3. 在java中一个类被声明为final类型,表示了什么意思?

  答:表示该类不能被继承,意味着它不能再派生出新的子类,不能作为父类被继承,是顶级类。

4. Error与Exception有什么区别?

  答:Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。

  Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。

5. 谈谈final, finally的区别。

Struts2 Lesson4: How to check data with validate

在Struts2中最简单的验证数据的方法是使用validate.我们从ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可使用addFieldError或addActionError加入相应的错误信息,如果存在Action或Field错误,Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。

这两个add方法和ActionErrors类中的add方法类似,只是add方法的错误信息需要一个ActionMessage对象,比较麻烦。除了加入错误信息外,还可以使用addActionMessage方法加入成功提交后的信息。当提交成功后,可以显示这些信息。

页面

订阅 JAVA技术网 RSS