|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。cookie|搜刮引擎<Pstyle="TEXT-INDENT:2em">上面也是一个搜刮引擎界面的例子,经由过程修正后面HTTP形态代码的例子失掉。在这个Servlet中,用户界面是静态天生而不是由静态HTML文件供应的。Servlet除卖力读取表双数据并把它们发送给搜刮引擎以外,还要把包括表双数据的Cookie发送给客户端。今后客户再次会见统一表单时,这些Cookie的值将用来事后添补表单,使表单主动显现比来利用过的数据。 SearchEnginesFrontEnd.java
该Servlet机关一个次要由表单组成的用户界面。第一次显现的时分,它和后面用静态HTML页面供应的界面差未几。但是,用户选择的值将被保留到Cookie(本页面将数据发送到CustomizedSearchEnginesServlet,由后者设置Cookie)。用户今后再会见统一页面时,即便扫瞄器是加入以后再启动,表单中也会主动填好上一次搜刮所填写的内容。
注重该Servlet用到了ServletUtilities.java,个中getCookieValue后面已先容过,headWithTitle用于天生HTML页面的一部分。别的,这里也用到了后面已申明的LongLiveCookie类,我们用它来创立取消刻日很长的Cookie。
packagehall;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.net.*;
publicclassSearchEnginesFrontEndextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
Cookie[]cookies=request.getCookies();
StringsearchString=
ServletUtilities.getCookieValue(cookies,
"searchString",
"JavaProgramming");
StringnumResults=
ServletUtilities.getCookieValue(cookies,
"numResults",
"10");
StringsearchEngine=
ServletUtilities.getCookieValue(cookies,
"searchEngine",
"google");
response.setContentType("text/html");
PrintWriterout=response.getWriter();
Stringtitle="SearchingtheWeb";
out.println(ServletUtilities.headWithTitle(title)+
"<BODYBGCOLOR=\"#FDF5E6\">\n"+
"<H1ALIGN=\"CENTER\">SearchingtheWeb</H1>\n"+
"\n"+
"<FORMACTION=\"/servlet/hall.CustomizedSearchEngines\">\n"+
"<CENTER>\n"+
"SearchString:\n"+
"<INPUTTYPE=\"TEXT\"NAME=\"searchString\"\n"+
"VALUE=\""+searchString+"\"><BR>\n"+
"ResultstoShowPerPage:\n"+
"<INPUTTYPE=\"TEXT\"NAME=\"numResults\"\n"+
"VALUE="+numResults+"SIZE=3><BR>\n"+
"<INPUTTYPE=\"RADIO\"NAME=\"searchEngine\"\n"+
"VALUE=\"google\""+
checked("google",searchEngine)+">\n"+
"Google|\n"+
"<INPUTTYPE=\"RADIO\"NAME=\"searchEngine\"\n"+
"VALUE=\"infoseek\""+
checked("infoseek",searchEngine)+">\n"+
"Infoseek|\n"+
"<INPUTTYPE=\"RADIO\"NAME=\"searchEngine\"\n"+
"VALUE=\"lycos\""+
checked("lycos",searchEngine)+">\n"+
"Lycos|\n"+
"<INPUTTYPE=\"RADIO\"NAME=\"searchEngine\"\n"+
"VALUE=\"hotbot\""+
checked("hotbot",searchEngine)+">\n"+
"HotBot\n"+
"<BR>\n"+
"<INPUTTYPE=\"SUBMIT\"VALUE=\"Search\">\n"+
"</CENTER>\n"+
"</FORM>\n"+
"\n"+
"</BODY>\n"+
"</HTML>\n");
}
privateStringchecked(Stringname1,Stringname2){
if(name1.equals(name2))
return("CHECKED");
else
return("");
}
}
CustomizedSearchEngines.java
后面的SearchEnginesFrontEndServlet把数据发送到CustomizedSearchEnginesServlet。本例在很多方面与后面先容HTTP形态代码时的例子类似,区分在于,本例除要机关一个针对搜刮引擎的URL并向用户发送一个重定向应对以外,还要发送保留用户数据的Cookies。
packagehall;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.net.*;
publicclassCustomizedSearchEnginesextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
StringsearchString=request.getParameter("searchString");
CookiesearchStringCookie=
newLongLivedCookie("searchString",searchString);
response.addCookie(searchStringCookie);
searchString=URLEncoder.encode(searchString);
StringnumResults=request.getParameter("numResults");
CookienumResultsCookie=
newLongLivedCookie("numResults",numResults);
response.addCookie(numResultsCookie);
StringsearchEngine=request.getParameter("searchEngine");
CookiesearchEngineCookie=
newLongLivedCookie("searchEngine",searchEngine);
response.addCookie(searchEngineCookie);
SearchSpec[]commonSpecs=SearchSpec.getCommonSpecs();
for(inti=0;i<commonSpecs.length;i++){
SearchSpecsearchSpec=commonSpecs[i];
if(searchSpec.getName().equals(searchEngine)){
Stringurl=
searchSpec.makeURL(searchString,numResults);
response.sendRedirect(url);
return;
}
}
response.sendError(response.SC_NOT_FOUND,
"Norecognizedsearchenginespecified.");
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 |
|