若相依 发表于 2015-1-18 11:25:49

JAVA网页编程之关于Servlet、Jsp中的多国言语显现(续)...

在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。js|servlet|显现续
---

/**
*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;
for(inti=0;i<values.length;i++)
values=(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,Stringname,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,Stringname,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,Stringname,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,booleanrequired,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,booleanrequired,StringdefValue)throwsServletException{
if(request.getAttribute(UtfBaseServlet.PARAMS_ATTR_NAME)!=null){
UTF8ParameterReaderparams=(UTF8ParameterReader)request.getAttribute(UtfBaseServlet.PARAMS_ATTR_NAME);
if(params.getParameter(name)!=null)returnparams.getParameter(name);
if(required)thrownewServletException("TheParameter"+name+"Requiredbutnotprovided!");
elsereturndefValue;
}else{
if(request.getParameter(name)!=null)returnrequest.getParameter(name);
if(required)thrownewServletException("TheParameter"+name+"Requiredbutnotprovided!");
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(HttpServletRequestrequest,Stringname,booleanrequired,java.sql.TimestampdefValue)throwsServletException{
Stringvalue=getParameter(request,name,required,String.valueOf(defValue));
returnjava.sql.Timestamp.valueOf(value);
}
/**
*Initializestheservlet.
*/
publicvoidinit(){
//insertcodetoinitializetheservlethere

}
/**
*Processincomingrequestsforinformation
*
*@paramrequestObjectthatencapsulatestherequesttotheservlet
*@paramresponseObjectthatencapsulatestheresponsefromtheservlet
*/
publicvoidperformTask(HttpServletRequestrequest,HttpServletResponseresponse){

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)throwsjavax.servlet.ServletException,java.io.IOException{
Stringcontent=request.getContentType();
if(content==null||content!=null&&content.toLowerCase().startsWith("application/x-www-form-urlencoded"))
request.setAttribute(PARAMS_ATTR_NAME,newUTF8ParameterReader((HttpServletRequest)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和我切磋。

但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。

再现理想 发表于 2015-1-21 06:09:37

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

爱飞 发表于 2015-1-22 05:13:54

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

简单生活 发表于 2015-1-24 13:40:47

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

只想知道 发表于 2015-1-30 23:34:28

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

谁可相欹 发表于 2015-2-4 18:51:20

是一种语言,用以产生「小应用程序(Applet(s))

小魔女 发表于 2015-2-9 18:30:02

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

若相依 发表于 2015-2-15 10:49:49

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

灵魂腐蚀 发表于 2015-2-25 17:16:28

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

小妖女 发表于 2015-3-11 19:33:54

是一种突破用户端机器环境和CPU

兰色精灵 发表于 2015-3-13 02:07:18

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

活着的死人 发表于 2015-3-20 09:29:33

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

变相怪杰 发表于 2015-4-12 23:08:08

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
页: [1]
查看完整版本: JAVA网页编程之关于Servlet、Jsp中的多国言语显现(续)...