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及上传文件相关推荐

  1. 【Spring Boot】关于上传文件例子的剖析

    目录 Spring Boot 上传文件 功能实现 增加ControllerFileUploadController 增加ServiceStorageService 增加一个Thymeleaf页面 修改 ...

  2. 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...

    J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...

  3. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.appl ...

  4. part.write java_使用javax.servlet.http.Part类上传文件

    使用的是Servlet 3.0 新的特征标注(Annotaion)类描述部署,一些低版本的服务器需要使用标准依赖部署描述文件(web.xml)来部署,另外Part也是Java EE 6.0新增的类,P ...

  5. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  6. java ee 上传文件_17.《JavaEE 学习笔记》Servlet 上传文件

    功能介绍: 利用 Servlet 和表单提交,选择本地文件上传到服务器.上传的文件可以是文本文件或图像文件或任何文档,不能是文件夹. 需要引入的 jar 文件:commons-fileupload-1 ...

  7. servlet文件上传下载_Servlet上传文件和下载文件示例

    servlet文件上传下载 Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例 ...

  8. Servlet上传文件和下载文件示例

    Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例. 用例 我们的用例是提供一 ...

  9. ajax上传文件到servlet

    js $(function() {// js判断文件大小function findSize(field_id) {let fileInput = $("#"+field_id)[0 ...

最新文章

  1. php要求掌握链表结构吗,PHP 链表结构之单链表(一)
  2. 中山学院计算机学院家长座谈会,计算机科学与技术学院举办校友座谈会
  3. javascript的特点
  4. Java的反射机制 工厂模式综合讲解【转载自51CTO】
  5. 信息系统项目管理师优秀论文:项目整体管理
  6. linux下能用qt5.0,qt5.0移植
  7. Java对PHP服务器hmac_sha1签名认证方法的匹配实现
  8. 引入外部机构需要注意的事项_如何与外部营销机构合作
  9. oracle count over partition by,over (Partition by...) of oracle
  10. ORA-01033 的解决
  11. 为什么现在很小的孩子都会玩游戏,他们真的看得懂吗?
  12. 怎么打断点_孩子注意力不集中怎么办?7招提升儿童专注力,方法简单效果好...
  13. Delphi7 动态数组
  14. 抢小米脚本 java,java写自动抢小米手机程序
  15. 自然语言处理核心期刊_中文核心期刊简介及投稿推荐.PDF
  16. oracle获取中位数
  17. echarts双折线图自定义tooltips样式
  18. 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史
  19. matlab求两向量夹角_【求精干货】高中数学知识点总结归纳高一学生必须掌握
  20. Hibernate的DetachedCriteria使用(含Criteria)转载

热门文章

  1. Java2017面试宝典--XML部分、 流行的框架与新技术、软件工程与设计模式、 j2ee部分、EBJ部分、 webservice部分...
  2. centos7下python3与python2共存并且开启py3虚拟环境
  3. java ==和equals的区别
  4. Javascript与C#中使用正则表达式
  5. 用户体验——南通大学教务学生管理系统
  6. Java的堆与栈,科普给大家
  7. 【卡法电子商务】-常用手机屏幕尺寸 ★★★★★
  8. virtualbox下安装archlinux
  9. DB2常用傻瓜问题1000问(之一)
  10. linux centos/redhat mysql8.0安装(汇总贴)