日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

几个实用的Servlet应用例子-入门、cookie、session及上传文件

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几个实用的Servlet应用例子-入门、cookie、session及上传文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??1Servlet可以被認為是服務端的applet,它被WEB服務器加載和執行,前端可以顯示頁面和獲得頁面數據,后臺可以操縱數據庫,能完成JavaBean的很多功能。在這里我較為詳細的說說Servlet在Cookie,Session和上傳文件上的應用,在說明時我給出一些能編繹運行的小例子,最后給出一個文件上傳例子以加深印象。?
??2  我們先來看看SERVLET程序的基本構架:?
??3式1:
??4  package?test;
??5  import?javax.servlet.*;?
??6  import?javax.servlet.http.*;?
??7  import?java.io.*;?
??8  import?java.util.*;?
??9  public?class?test?extends?HttpServlet?{?
?10  public?void?init(ServletConfig?config)?throws?ServletException?{?
?11  super.init(config);
?12}
?
?13  public?void?service(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{?
?14  int?f?=1;?switch(f){?
?15  case?1:firstMothed(request,respponse);break;?
?16}
?
?17}

?18  public?void?firstMothed(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{?
?19  response.setContentType("text/html");
?20  OutputStreamWriter?osw?=?new?
?21  OutputStreamWriter(response.getOutputStream());?
?22  PrintWriter?out?=?new?PrintWriter?(response.getOutputStream());
?23  out.println("<?html>");?
?24  out.println("<?head><?title>Servlet1<?/title><?/head>");
?25  out.println("<?body>你好!");?
?26  out.println("<?/body><?/html>");?
?27  out.close();?
?28}
?
?29}
?
?30式2:
?31  package?test;?
?32  import?javax.servlet.*;?
?33  import?javax.servlet.http.*;
?34  import?java.io.*;?
?35  import?java.util.*;?
?36  public?class?test?extends?HttpServlet?{?
?37  public?void?init(ServletConfig?config)?throws?ServletException?{
?38  super.init(config);
?39}

?40  public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
?41  response.setContentType("text/html");
?42  OutputStreamWriter?osw?=?new?OutputStreamWriter(response.getOutputStream());
?43  PrintWriter?out?=?new?PrintWriter?(response.getOutputStream());
?44  out.println("<?html>");?
?45  out.println("<?head><?title>Servlet1<?/title><?/head>");?
?46  out.println("<?body>你好!");
?47  out.println("<?/body><?/html>");
?48  out.close();
?49}

?50  public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
?51  response.setContentType("text/html");
?52  OutputStreamWriter?osw?=?new?OutputStreamWriter(response.getOutputStream());?
?53  PrintWriter?out?=?new?PrintWriter?(response.getOutputStream());?
?54  out.println("<?html>");
?55  out.println("<?head><?title>Servlet1<?/title><?/head>");?
?56  out.println("<?body>你好!");?
?57  out.println("<?/body><?/html>");?
?58  out.close();?
?59}
?
?60}
?
?61  式1適合于作總控模塊,此SERVLET作中間調度,根據不同的f值調用不同的SERVLET或方法。?
?62式2適合于對html的get和post有不同要求的情況。
?63  但這并不是絕對的,式2就完全可以代替式1,只要在doGet()方法中寫上doPost就與式1完全一樣。
?64在init方法中執行的語句,只要這個servlet被啟動了就一直有效,比如,我們在init()中new了一個對象,那么這個對象的內存空間就永遠存在,除非顯式地把這個對象賦為null,或重啟服務。
?65  HttpServletRequest和HttpServletResponse兩個對象實現http請求,它們有很多有用的方法,在下面的cookie和session管理中會細加描述。
?66  1,?cookie管理?cookie用于在客戶端保存個人所特有的信息,它采取在客戶機寫臨時文件的機制。?
?67  package?test;?
?68  import?javax.servlet.*;?
?69  import?javax.servlet.http.*;?
?70  import?java.io.*;?
?71  import?java.util.*;?
?72  public?class?test?extends?HttpServlet?{
?73  public?void?init(ServletConfig?config)?throws?ServletException?{
?74  super.init(config);
?75}

?76  public?void?service(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
?77  //寫cookie?
?78  String?CookieName?="js79";?//若是漢字則需編碼?
?79  String?CookieValue?=?"yesky";//若是漢字則需編碼?
?80  Cookie?cookie?=?new?Cookie(CookieName,CookieValue);?
?81  cookie.setMaxAge(age);?//?age?=?Integer.MAX_VALUE?永不過期
?82  cookie.setPath("/");
?83  //讀cookie?
?84  String?value?=?null;
?85  Cookie[]?cookies?=?request.getCookies();
?86  if?(cookies?!=?null)?{
?87  for?(int?i=0;?i<?cookies.length;?i++)?{?
?88  if?(cookies[i].getName().equals(CookieName))
?89  value?=?cookies[i].getValue();?
?90  break;?
?91}
?
?92}

?93}

?94  response.setContentType("text/html");?
?95  OutputStreamWriter?osw?=?new?OutputStreamWriter(response.getOutputStream());
?96  PrintWriter?out?=?new?PrintWriter?(response.getOutputStream());
?97  out.println("<?html>");
?98  out.println("<?head><?title>test<?/title><?/head>");?
?99  out.println("cookie鍵:"+CookieName+"<?br>");?
100  out.println("cookie值:?"+value);?
101  out.println("<?/body><?/html>");
102  out.close();
103}

104}
105  2,session管理?
106  Session在Servlet中是很有用的,它比cookie安全可靠靈活,但是管理起來有點麻煩,用得不好會造成服務器的開銷很大,浪費資源。下面是一個基于Session管理一個對象的簡單例子。?
107一個簡單的bean對象TestObject
108  package?test;?
109  public?class?TestObject?extends?Object?{
110  int?id?=?0;?public?String?cur="";
111}
?
112  package?test;
113  import?javax.servlet.*;?
114  import?javax.servlet.http.*;?
115  import?java.io.*;?
116  import?java.util.*;
117  public?class?TestMan?extends?HttpServlet?{?
118  public?void?init(ServletConfig?config)?throws?ServletException?{
119  super.init(config);
120}

121  public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{?
122  int?f?=?1;
123  if(request.getParameter("f")!=null)
124  f?=?
125  Integer.parseInt(request.getParameter("f"));?
126  switch(f){?
127  case?1:?this.getResult(request,response);?
128  break;
129  case?2:
130  this.setSession(request,response);
131  break;?
132}
?
133}
?
134  public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{?
135  doGet(request,response);
136}

137  public?void?getResult(HttpServletRequest?request,?HttpServletResponse?response)?  throws?ServletException,?IOException?{
138  TestObject?testObject?=?null;
139  testObject?=?getStatus(request,response);
140  String?html?=?testObject.id;?doWrite(?response,html);?
141}

142  public?void?setSession(HttpServletRequest?request,?HttpServletResponse?response)? throws?ServletException,?IOException?{
143  HttpSession?session?=?request.getSession();?
144  TestObject?testObject?=?null;?
145  testObject?=?getStatus(request,response);?
146  String?tmp?=?null;?
147  tmp?=?request.getParameter("id");
148  if(tmp?!=?null)?testObject.id?=?tmp;?
149  session.putValue("testObject?",article);?
150  getResult(request,response);
151}
?
152  private?TestObject?getStatus(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
153  HttpSession?session?=?request.getSession();?
154  TestObject?testObject?=?null;?
155  if(session!=null){
156  if(session.getValue("testObject?")!=null){
157  testObject?=?(TestObject)session.getValue("testObject?");
158}
?
159  else{
160  testObject?=?new?TestObject?();
161}

162}

163  else{?
164  testObject?=?new?TestObject?();?
165}

166  return?testObject;?
167}

168  private?void?doWrite(HttpServletResponse?response,String?html)?throws?  ServletException,?IOException?{?
169  PrintWriter?out?=?response.getWriter();
170  out.println(html);?
171  out.close();
172}

173  /?
174}
?
175  若能輕松搞定上面的例子,相信讀者對SERVLET已有了較為深刻的理解。?
176下面再介紹一個上傳文件例子,其中汲及到了下載的免費JavaBean?(如有感興趣的朋友,可來函索要免費JavaBean源代碼,Email:js79@yesky.com)?
177  上傳基本原理:由頁面發出一個http請求,服務端得到請求后,解析多媒體協議,讀出文件內容,寫文件內容到服務器,所有的這些功能都封裝到JavaBean中。
178  上傳文件的必需條件:Browser端<?form>表單的ENCTYPE屬性值必須為?multipart/form-data,它告訴我們傳輸的數據要用到多媒體傳輸協議,由于多媒體傳輸的都是大量的數據,所以規定上傳文件必須是post方法,<?input>的type屬性必須是file。?
179  package?upload;
180  import?javax.servlet.*;?
181  import?javax.servlet.http.*;?
182  import?java.io.*;?
183  import?java.util.*;?
184  public?class?UpLoadServlet?extends?HttpServlet?{
185  public?void?init(ServletConfig?config)?throws?ServletException{?
186  super.init(config);
187}
?
188  public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
189  PrintWriter?out?=?response.getWriter();
190  out.println("<?HTML><?HEAD><?TITLE>UpLoad<?/TITLE>"
191  +"<?meta?http-equiv=′Content-Type′?content=′text/html;?charset=gb2312′>"?
192  +"<?/HEAD>"?
193  +"<?body>");?
194  out.println("<?div?align=′center′?valign=′top′>"
195  +"<?span?class=′nava′>請你選擇上傳的文件(請注意文件大小只能在20K之內)<?/span><?BR>"?
196  +"<?form?ENCTYPE=′multipart/form-data′?method=post?action=′′>"?
197  +"<?input?type=′file′?name=′file′>"?
198  +"<?input?type=′submit′?value=′發送′>"?
199  +"<?/form>"
200  +"<?/div>");?
201  out.println("<?/body><?/html>");
202  out.close();?
203}
?
204  
205  public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
206  PrintWriter?out?=?response.getWriter();?
207  int?tmpID?=?1;?try?{
208  MultipartRequest?multi?=?new?MultipartRequest(request,"/home/js79/html/",?5?*?1024?*?1024);
209}

210  catch(Exception?e){
211  tmpID?=?-1;?System.out.println(e);
212}
?
213  if(tmpID?==?1){
214  out.println("<?HTML><?HEAD><?TITLE>UpLoad<?/TITLE>"?
215  +"<?meta?http-equiv=′Content-Type′?content=′text/html;?charset=gb2312′>"
216  +"<?/HEAD>"
217  +"<?body>");?
218  out.println("上傳成功!<?/body><?/html>");?
219}
?
220  else{
221  out.println("<?HTML><?HEAD><?TITLE>UpLoad<?/TITLE>"
222  +"<?meta?http-equiv=′Content-Type′?content=′text/html;?charset=gb2312′>"?
223  +"<?/HEAD>"
224  +"<?body>");
225  out.println("上傳不成功!<?/body><?/html>");
226}
?
227  out.close();
228}

229}
? ?

轉載于:https://www.cnblogs.com/wubiyu/archive/2008/06/25/1229617.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的几个实用的Servlet应用例子-入门、cookie、session及上传文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。