仓酷云

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

[学习教程] JAVA网页设计Java Servlet/Jsp多言语办理计划(二)

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

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

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

x
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)js|servlet|办理我是这么做的,创建一个Servlet基类,掩盖service办法,在挪用父类的service方
法前读取并剖析form提交的内容,请看上面的源代码:
packagecom.hto.servlet;
importjavax.servlet.http.HttpServletRequest;
importjava.util.*;
/**
*Insertthetypesdescriptionhere.
*Creationdate:(2001-2-415:43:46)
*@author:钱卫春
*/
publicclassUTF8ParameterReader{
Hashtablepairs=newHashtable();
/**
*UTF8ParameterReaderconstructorcomment.
*/
publicUTF8ParameterReader(HttpServletRequestrequest)throwsjava.io.IOExce
ption{
super();
parse(request.getQueryString());
parse(request.getReader().readLine());
}
/**
*UTF8ParameterReaderconstructorcomment.
*/
publicUTF8ParameterReader(HttpServletRequestrequest,Stringencoding)throw
sjava.io.IOException{
super();
parse(request.getQueryString(),encoding);
parse(request.getReader().readLine(),encoding);
}
publicstaticStringdecode(Strings)throwsException{
StringBuffersb=newStringBuffer();
for(inti=0;i<s.length();i++){
charc=s.charAt(i);
switch(c){
case+:
sb.append();
break;
case%:
try{
sb.append((char)Integer.parseInt(
s.substring(i+1,i+3),16));
}
catch(NumberFormatExceptione){
thrownewIllegalArgumentException();
}
i+=2;
break;
default:
sb.append(c);
break;
}
}
//Undoconversiontoexternalencoding
Stringresult=sb.toString();
byte[]inputBytes=result.getBytes("8859_1");
returnnewString(inputBytes,"UTF8");
}
publicstaticStringdecode(Strings,Stringencoding)throwsException{
StringBuffersb=newStringBuffer();
for(inti=0;i<s.length();i++){
charc=s.charAt(i);
switch(c){
case+:
sb.append();
break;
case%:
try{
sb.append((char)Integer.parseInt(
s.substring(i+1,i+3),16));
}
catch(NumberFormatExceptione){
thrownewIllegalArgumentException();
}
i+=2;
break;
default:
sb.append(c);
break;
}
}
//Undoconversiontoexternalencoding
Stringresult=sb.toString();
byte[]inputBytes=result.getBytes("8859_1");
returnnewString(inputBytes,encoding);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-417:30:59)
*@returnjava.lang.String
*@paramnamejava.lang.String
*/
publicStringgetParameter(Stringname){
if(pairs==null||!pairs.containsKey(name))returnnull;
return(String)(((ArrayList)pairs.get(name)).get(0));
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-417:28:17)
*@returnjava.util.Enumeration
*/
publicEnumerationgetParameterNames(){
if(pairs==null)returnnull;
returnpairs.keys();
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-417:33:40)
*@returnjava.lang.String[]
*@paramnamejava.lang.String
*/
publicString[]getParameterValues(Stringname){
if(pairs==null||!pairs.containsKey(name))returnnull;
ArrayListal=(ArrayList)pairs.get(name);
String[]values=newString[al.size()];
for(inti=0;i<values.length;i++)
values[i]=(String)al.get(i);
returnvalues;
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-420:34:37)
*@paramurlencjava.lang.String
*/
privatevoidparse(Stringurlenc)throwsjava.io.IOException{
if(urlenc==null)return;
StringTokenizertok=newStringTokenizer(urlenc,"&");
try{
while(tok.hasMoreTokens()){
StringaPair=tok.nextToken();
intpos=aPair.indexOf("=");
Stringname=null;
Stringvalue=null;
if(pos!=-1){
name=decode(aPair.substring(0,pos));
value=decode(aPair.substring(pos+1));
}else{
name=aPair;
value="";
}
if(pairs.containsKey(name)){
ArrayListvalues=(ArrayList)pairs.get(name);
values.add(value);
}else{
ArrayListvalues=newArrayList();
values.add(value);
pairs.put(name,values);
}
}
}catch(Exceptione){
thrownewjava.io.IOException(e.getMessage());
}
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-420:34:37)
*@paramurlencjava.lang.String
*/
privatevoidparse(Stringurlenc,Stringencoding)throwsjava.io.IOException
{
if(urlenc==null)return;
StringTokenizertok=newStringTokenizer(urlenc,"&");
try{
while(tok.hasMoreTokens()){
StringaPair=tok.nextToken();
intpos=aPair.indexOf("=");
Stringname=null;
Stringvalue=null;
if(pos!=-1){
name=decode(aPair.substring(0,pos),encoding);
value=decode(aPair.substring(pos+1),encoding);
}else{
name=aPair;
value="";
}
if(pairs.containsKey(name)){
ArrayListvalues=(ArrayList)pairs.get(name);
values.add(value);
}else{
ArrayListvalues=newArrayList();
values.add(value);
pairs.put(name,values);
}
}
}catch(Exceptione){
thrownewjava.io.IOException(e.getMessage());
}
}
}
这个类的功效就是读取并保留form提交的信息,并完成经常使用的getParameter办法。
packagecom.hto.servlet;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
/**
*Insertthetypesdescriptionhere.
*Creationdate:(2001-2-58:28:20)
*@author:钱卫春
*/
publicclassUtfBaseServletextendsHttpServlet{
publicstaticfinalStringPARAMS_ATTR_NAME="PARAMS_ATTR_NAME";
/**
*ProcessincomingHTTPGETrequests
*
*@paramrequestObjectthatencapsulatestherequesttotheservlet
*@paramresponseObjectthatencapsulatestheresponsefromtheservlet
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
performTask(request,response);
}
/**
*ProcessincomingHTTPPOSTrequests
*
*@paramrequestObjectthatencapsulatestherequesttotheservlet
*@paramresponseObjectthatencapsulatestheresponsefromtheservlet
*/
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
performTask(request,response);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:52:43)
*@returnint
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValueint
*/
publicstaticjava.sql.DategetDateParameter(HttpServletRequestrequest,Str
ingname,booleanrequired,java.sql.DatedefValue)throwsServletException{

Stringvalue=getParameter(request,name,required,String.valueOf(defValue));

returnjava.sql.Date.valueOf(value);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:52:43)
*@returnint
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValueint
*/
publicstaticdoublegetDoubleParameter(HttpServletRequestrequest,Stringn
ame,booleanrequired,doubledefValue)throwsServletException{
Stringvalue=getParameter(request,name,required,String.valueOf(defValue));

returnDouble.parseDouble(value);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:52:43)
*@returnint
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValueint
*/
publicstaticfloatgetFloatParameter(HttpServletRequestrequest,Stringnam
e,booleanrequired,floatdefValue)throwsServletException{
Stringvalue=getParameter(request,name,required,String.valueOf(defValue));

returnFloat.parseFloat(value);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:52:43)
*@returnint
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValueint
*/
publicstaticintgetIntParameter(HttpServletRequestrequest,Stringname,b
ooleanrequired,intdefValue)throwsServletException{
Stringvalue=getParameter(request,name,required,String.valueOf(defValue));

returnInteger.parseInt(value);
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:43:36)
*@returnjava.lang.String
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValuejava.lang.String
*/
publicstaticStringgetParameter(HttpServletRequestrequest,Stringname,b
ooleanrequired,StringdefValue)throwsServletException{
if(request.getAttribute(UtfBaseServlet.PARAMS_ATTR_NAME)!=null){
UTF8ParameterReaderparams=(UTF8ParameterReader)request.getAttribute(UtfBa
seServlet.PARAMS_ATTR_NAME);
if(params.getParameter(name)!=null)returnparams.getParameter(name);
if(required)thrownewServletException("TheParameter"+name+"Requiredbu
tnotprovided!");
elsereturndefValue;
}else{
if(request.getParameter(name)!=null)returnrequest.getParameter(name);
if(required)thrownewServletException("TheParameter"+name+"Requiredbu
tnotprovided!");
elsereturndefValue;
}
}
/**
*Returnstheservletinfostring.
*/
publicStringgetServletInfo(){
returnsuper.getServletInfo();
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:52:43)
*@returnint
*@paramrequestjavax.servlet.http.HttpServletRequest
*@paramnamejava.lang.String
*@paramrequiredboolean
*@paramdefValueint
*/
publicstaticjava.sql.TimestampgetTimestampParameter(HttpServletRequestre
quest,Stringname,booleanrequired,java.sql.TimestampdefValue)throwsSe
rvletException{
Stringvalue=getParameter(request,name,required,String.valueOf(defValue));

returnjava.sql.Timestamp.valueOf(value);
}
/**
*Initializestheservlet.
*/
publicvoidinit(){
//insertcodetoinitializetheservlethere
}
/**
*Processincomingrequestsforinformation
*
*@paramrequestObjectthatencapsulatestherequesttotheservlet
*@paramresponseObjectthatencapsulatestheresponsefromtheservlet
*/
publicvoidperformTask(HttpServletRequestrequest,HttpServletResponseresp
onse){
try
{
//Insertusercodefromhere.
}
catch(ThrowabletheException)
{
//uncommentthefollowinglinewhenunexpectedexceptions
//areoccuringtoaidindebuggingtheproblem.
//theException.printStackTrace();
}
}
/**
*Insertthemethodsdescriptionhere.
*Creationdate:(2001-2-58:31:54)
*@paramrequestjavax.servlet.ServletRequest
*@paramresponsejavax.servlet.ServletResponse
*@exceptionjavax.servlet.ServletExceptionTheexceptiondescription.
*@exceptionjava.io.IOExceptionTheexceptiondescription.
*/
publicvoidservice(ServletRequestrequest,ServletResponseresponse)throws
javax.servlet.ServletException,java.io.IOException{
Stringcontent=request.getContentType();
if(content==null||content!=null&&content.toLowerCase().startsWith("a
pplication/x-www-form-urlencoded"))
request.setAttribute(PARAMS_ATTR_NAME,newUTF8ParameterReader((HttpServletRe
quest)request));
super.service(request,response);
}
}
  这个就是Servlet基类,它掩盖了父类的service办法,在挪用父类service前,创立
了UTF8ParameterReader对象,个中保留了form中提交的信息。然后把这个对象作为一个
Attribute保留到Request对象中。然后还是挪用父类的service办法。
  关于承继这个类的Servlet,要注重的是,"尺度"getParameter在也不克不及读到post的
数据,由于在这之前这个类中已从ServletInputStream中读出了数据了。以是应当使
用该类中供应的getParameter办法。
  剩下的就是输入成绩了,我们要把输入的信息,转为UTF8的二进制流输入。只需我
们设置Content-Type时指定charset为UTF8,然后利用PrintWriter输入,那末这些转换
是主动举行的,Servlet中如许设置:
  response.setContentType("text/html;charset=UTF8");
Jsp中如许设置:
  <%@pagecontentType="text/html;charset=UTF8"%>
  如许就能够包管输入是UTF8流,客户端可否显现,就看客户真个了。
  关于multipart/form-data的form提交的内容,我也供应一个类用来处置,在这个类
的机关子中能够指定页面利用的charset,默许仍是UTF-8,限于篇幅不贴出源码,假如
感乐趣能够mailto:vividq@china.com和我切磋。

学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
变相怪杰 该用户已被删除
10#
发表于 2015-3-21 12:20:30 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
精灵巫婆 该用户已被删除
9#
 楼主| 发表于 2015-3-14 17:09:52 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
小女巫 该用户已被删除
8#
发表于 2015-3-7 09:31:48 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
7#
发表于 2015-2-23 17:03:46 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
乐观 该用户已被删除
6#
发表于 2015-2-16 01:45:23 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
老尸 该用户已被删除
5#
发表于 2015-2-6 11:43:59 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
谁可相欹 该用户已被删除
地板
发表于 2015-1-30 15:00:52 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-27 08:32:01 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 20:16:18 | 只看该作者
是一种为 Internet发展的计算机语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 15:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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