Servlet可以被认为是服务端的applet,它被WEB服务器加载和执行,前端可以显示页面和获得页面数据,后台可以操纵数据库,能完成JavaBean的很多功能。在这里我较为详细的说说Servlet在Cookie,Session和上传文件上的应用,在说明时我给出一些能编绎运行的小例子,最后给出一个文件上传例子以加深印象。
我们先来看看SERVLET程序的基本构架:
式1:
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int f =1; switch(f){
case 1:firstMothed(request,respponse);break;
}
}
public void firstMothed(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new
OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
}
式2:
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>Servlet1< /title>< /head>");
out.println("< body>你好!");
out.println("< /body>< /html>");
out.close();
}
}
式1适合于作总控模块,此SERVLET作中间调度,根据不同的f值调用不同的SERVLET或方法。
式2适合于对html的get和post有不同要求的情况。
但这并不是绝对的,式2就完全可以代替式1,只要在doGet()方法中写上doPost就与式1完全一样。
在init方法中执行的语句,只要这个servlet被启动了就一直有效,比如,我们在init()中new了一个对象,那么这个对象的内存空间就永远存在,除非显式地把这个对象赋为null,或重启服务。
HttpServletRequest和HttpServletResponse两个对象实现http请求,它们有很多有用的方法,在下面的cookie和session管理中会细加描述。
1, cookie管理 cookie用于在客户端保存个人所特有的信息,它采取在客户机写临时文件的机制。
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class test extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//写cookie
String CookieName ="js79"; //若是汉字则需编码
String CookieValue = "yesky";//若是汉字则需编码
Cookie cookie = new Cookie(CookieName,CookieValue);
cookie.setMaxAge(age); // age = Integer.MAX_VALUE 永不过期
cookie.setPath("/");
//读cookie
String value = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i=0; i< cookies.length; i++) {
if (cookies[i].getName().equals(CookieName))
value = cookies[i].getValue();
break;
}
}
}
response.setContentType("text/html");
OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("< html>");
out.println("< head>< title>test< /title>< /head>");
out.println("cookie键:"+CookieName+"< br>");
out.println("cookie值: "+value);
out.println("< /body>< /html>");
out.close();
}
}
2,session管理
Session在Servlet中是很有用的,它比cookie安全可靠灵活,但是管理起来有点麻烦,用得不好会造成服务器的开销很大,浪费资源。下面是一个基于Session管理一个对象的简单例子。
一个简单的bean对象TestObject
package test;
public class TestObject extends Object {
int id = 0; public String cur="";
}
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class TestMan extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int f = 1;
if(request.getParameter("f")!=null)
f =
Integer.parseInt(request.getParameter("f"));
switch(f){
case 1: this.getResult(request,response);
break;
case 2:
this.setSession(request,response);
break;
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
public void getResult(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
TestObject testObject = null;
testObject = getStatus(request,response);
String html = testObject.id; doWrite( response,html);
}
public void setSession(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
TestObject testObject = null;
testObject = getStatus(request,response);
String tmp = null;
tmp = request.getParameter("id");
if(tmp != null) testObject.id = tmp;
session.putValue("testObject ",article);
getResult(request,response);
}
private TestObject getStatus(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
TestObject testObject = null;
if(session!=null){
if(session.getValue("testObject ")!=null){
testObject = (TestObject)session.getValue("testObject ");
}
else{
testObject = new TestObject ();
}
}
else{
testObject = new TestObject ();
}
return testObject;
}
private void doWrite(HttpServletResponse response,String html) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(html);
out.close();
}
/////////////////////////////////////////////////////////
}
若能轻松搞定上面的例子,相信读者对SERVLET已有了较为深刻的理解。
下面再介绍一个上传文件例子,其中汲及到了下载的免费JavaBean (如有感兴趣的朋友,可来函索要免费JavaBean源代码,Email:js79@yesky.com)
上传基本原理:由页面发出一个http请求,服务端得到请求后,解析多媒体协议,读出文件内容,写文件内容到服务器,所有的这些功能都封装到JavaBean中。
上传文件的必需条件:Browser端< form>表单的ENCTYPE属性值必须为 multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,< input>的type属性必须是file。
package upload;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class UpLoadServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("< div align=´center´ valign=´top´>"
+"< span class=´nava´>请你选择上传的文件(请注意文件大小只能在20K之内)< /span>< BR>"
+"< form ENCTYPE=´multipart/form-data´ method=post action=´´>"
+"< input type=´file´ name=´file´>"
+"< input type=´submit´ value=´发送´>"
+"< /form>"
+"< /div>");
out.println("< /body>< /html>");
out.close();
}
////////
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
int tmpID = 1; try {
MultipartRequest multi = new MultipartRequest(request,"/home/js79/html/", 5 * 1024 * 1024);
}
catch(Exception e){
tmpID = -1; System.out.println(e);
}
if(tmpID == 1){
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("上传成功!< /body>< /html>");
}
else{
out.println("< HTML>< HEAD>< TITLE>UpLoad< /TITLE>"
+"< meta http-equiv=´Content-Type´ content=´text/html; charset=gb2312´>"
+"< /HEAD>"
+"< body>");
out.println("上传不成功!< /body>< /html>");
}
out.close();
}
}
分享到:
相关推荐
在这个"简单的servlet实例"中,我们重点探讨的是如何利用Servlet实现用户登录和注册功能,这是Web开发中的基础且重要的部分。 首先,让我们理解Servlet的工作原理。Servlet是一个Java类,它扩展了`javax.servlet....
在本教程中,我们将深入探讨如何创建Servlet,理解其编程模式,并通过向导快速创建Servlet实例。 ### 创建Servlet 1. **环境准备**:首先,确保你已经安装了Java Development Kit (JDK) 和集成开发环境(IDE),如...
在这个"JSON Servlet实例 Ajax应用"中,我们将探讨如何使用Servlet与客户端进行JSON数据交互,并结合Ajax实现异步通信。 首先,了解JSON的基本结构至关重要。JSON由键值对组成,键必须是字符串,且用双引号包围,值...
使用原始的servlet操作熟悉EJB的实体管理。 本实例主要功能:实现对员工、角色、账号、部门的关系管理。 本实例的实体设计:部门-员工:一对多。员工-账号:一对一。账号-角色:一对一。 主要采用EJB进行会话管理。...
以下是一个简单的Servlet实例: ```java import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class ExampleServlet extends HttpServlet { protected void doPost...
本项目"全注解servlet实例"采用的就是这种零配置的编程模式,让我们来详细探讨一下相关知识点。 1. **Servlet注解**: Servlet注解是Java EE标准的一部分,它允许我们在Servlet类或方法上直接应用注解,以声明式地...
在这个"Servlet实例注释版"的压缩包中,我们很显然会发现一些带有详细注释的Servlet示例代码,这对于初学者理解Servlet的工作原理和使用方法非常有帮助。 首先,Servlet是一个Java类,它扩展了`javax.servlet....
AJAX+servlet实例入门 AJAX+servlet实例入门是指通过结合AJAX技术和Servlet实现的Web应用程序。AJAX(Asynchronous JavaScript and XML)是一种技术,它可以使Web应用程序具备异步交互的能力,从而提高用户体验。...
Java Web Servlet实例是Java...通过这个简单的Java Web Servlet实例,你可以学习到如何创建、配置和使用Servlet,理解其在Web应用中的作用。实践这个实例可以帮助巩固理论知识,为后续更复杂的Web开发打下坚实基础。
总结,这个实例展示了如何结合HTML、JavaScript、Servlet和JSP构建一个基本的用户登录系统,涉及到客户端验证、服务器端处理以及与数据库的交互。虽然简单,但它构成了许多复杂Web应用的基础架构。
**Ajax+Servlet 实例** Ajax(Asynchronous JavaScript and XML)技术是现代Web开发中的关键组成部分,它允许在不刷新整个页面的情况下与服务器进行异步数据交互。Servlet是Java Web开发中的一个标准,用于处理和...
JavaEE Servlet实例是一个...通过深入研究这个Servlet实例,开发者不仅可以掌握Servlet的基本用法,还能了解到如何在实际项目中组织和管理代码。同时,这也是进一步学习JavaEE框架如Spring MVC、Struts或JSF的基础。
5. **文件上传和下载**:在某些Servlet实例中,可能包含文件上传和下载功能。这涉及到对HTTP请求的解析,以及如何安全地处理文件流,确保数据的完整性和安全性。 6. **异常处理**:源码中可能会包含错误处理逻辑,...
【JSP+Servlet实例数据库详解】 在Web开发领域,JSP(JavaServer Pages)和Servlet是两种常用的服务器端技术,常被用来构建动态网站和Web应用程序。本实例将深入讲解如何利用JSP和Servlet与数据库进行交互,实现一...
本教程“深入学习:Java Servlet开发与实例”旨在帮助Java从业者深入理解Servlet技术,并通过实例进行实践,提升开发能力。 Servlet是Java平台上的一个标准API,定义了如何在服务器端处理HTTP请求和响应。它为...
【jdbc+javabean+servlet实例】是一个典型的Java Web应用程序开发案例,主要涉及了三个核心技术:JDBC(Java Database Connectivity)、JavaBean以及Servlet。这个实例主要用于实现用户登录功能以及分页展示查询数据...
这个"Servlet实例和JDBC的连接.rar"文件包含了关于如何在Servlet中实现用户登录和注册功能,并且使用JDBC(Java Database Connectivity)进行数据库交互的示例。 首先,让我们深入了解Servlet的工作原理。Servlet...
标题“mvc jsp servlet 实例”揭示了本教程的核心内容,即关于Model-View-Controller(MVC)设计模式的实际应用,主要涉及到Java Web开发中的三大组件:Model、View和Controller。在这个实例中,开发者将学习如何...
本篇文章将深入探讨Servlet实例代码,帮助你理解并掌握Servlet的核心概念和实际应用。 1. **Servlet基础** Servlet是Java编程语言中的一类特殊类,它们扩展了Java平台的功能,允许开发者创建动态Web应用程序。...
【标题】:“jQuery + AJAX + JSON + Servlet 实例源码” 这个实例源码主要展示了如何在Web开发中利用jQuery库进行AJAX异步请求,与后台Servlet进行数据交互,并通过JSON格式来序列化和反序列化数据。这些技术是...