- 浏览: 284730 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
di1984HIT:
学习了。确实不错。、
Eclipse编辑XML自动提示 -
chokee:
可以不行再参考下这一篇http://yubolg.iteye. ...
Eclipse编辑XML自动提示 -
xiaofengtoo:
请问下 你用的什么版本 我用的8.0 版本我的郁闷了 没有Ge ...
ER/Studio使用 -
xp1056:
应该就是这样,可我的不行,我也重起eclipse了,郁闷
Eclipse编辑XML自动提示 -
sxpujs:
这个办法不错
div显示和不显示(当几列数据;<td></td>中显示或不显示)
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.getName().equals(CookieName)) value = cookies.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(); |
发表评论
-
一个好的比HTTP Analyzer更好的抓包,分析网页工具
2012-04-24 21:55 0http://www.fiddler2.com/fiddler ... -
juqery相关
2010-09-17 14:00 885一.jquery取值 1.radio Jquery老的版本 ... -
查询数据get吧.
2010-09-07 15:41 953查询数据get吧. 查询数据get吧. 然后 ... -
Jquery表单取值赋值的一些基本操作
2010-07-28 20:03 882/*获得TEXT.AREATEXT的值*/var tex ... -
css-tr中的每一个td都为红色
2010-07-12 16:05 2166<style type="text/css&q ... -
表格显示过多显示为省略号
2010-07-06 15:54 939<td title="${list.al ... -
取当前页面鼠标的地址.html
2010-06-28 16:42 1294<!DOCTYPE html PUBLIC " ... -
div显示和不显示(当几列数据;<td></td>中显示或不显示)
2010-04-19 20:07 8472都知道用div控制显示或不显示; <div id=&q ... -
常用jstl标签
2010-04-16 17:43 1023<%@taglib uri='http://java.s ... -
常用css记录
2010-04-16 15:02 7191.padding-left:10px; 左边距. 2. ... -
css 边距(border,margin等) 图片
2010-03-23 17:03 883这个图片更好理解.这些属性的意义. -
css 最常用属性
2009-04-23 17:45 1015属性名称 字体属性(Font) font-fam ... -
html some2
2009-04-08 22:58 9691.<html> <body> ... -
css some1
2009-04-08 22:58 11081. <html> ... -
html some1
2009-04-08 22:57 853<html> <body> &l ... -
jsp some2(碰到的)
2009-04-08 22:56 735一:jsp异常 jsp异常真难发现啊 1.一点点的注释, ... -
link跳转方式
2009-04-08 22:51 1282window.navigate("reg_newst ... -
window.history.back数据丢失解决办法
2009-04-08 22:50 3262回跳三个页面 history.go(-3); < ... -
jsp some1
2009-04-08 22:47 10431. 打印设置 ...
相关推荐
2. **Cookie机制**:文件名“购物车cookies”暗示了这个例子可能使用了Cookie来辅助实现购物车功能。Cookie是一种在客户端存储数据的方式,可以跨页面传递信息。虽然Session更适合存储敏感或大量数据,但Cookie可以...
本教程全面且实用,涵盖了多个ASP.NET的基础及进阶知识点,非常适合初学者和有经验的开发者进行学习。 在ASP.NET中,主要涉及以下几个核心概念: 1. **Web Forms**: ASP.NET Web Forms是ASP.NET的一种编程模型,它...
在入门源码中,可能包含以下几个关键知识点: 1. **页面生命周期**:ASP.NET Web Forms的页面生命周期是理解其工作原理的关键。从初始化到加载,再到回发和卸载,每个阶段都有特定的任务,如控件创建、数据绑定和...
使用Servlet或第三方库(如Apache Commons FileUpload)处理文件上传。 **4.9 文件下载** 设置适当的HTTP头信息,使浏览器下载文件而非显示: ```jsp response.setHeader("Content-Disposition", "attachment; ...
本教程的核心内容可能涵盖以下几个方面: 1. **基础语法**:包括变量定义、数据类型(如字符串、整型、浮点型、布尔型、数组、对象等)、操作符(算术、比较、逻辑、赋值等)、流程控制(条件语句、循环语句、开关...
在学习这些源代码时,你可以关注以下几个方面: 1. **服务器控件**:了解ASP.NET内置的服务器控件,如Button、TextBox、Label等,以及它们的属性和事件。 2. **页面生命周期**:理解一个ASP.NET页面从加载到响应的...
在"asp.net完全入门"的学习过程中,你将接触到以下几个关键知识点: 1. **Web Forms**:这是ASP.NET的基础,你将学习如何创建和运行第一个ASP.NET Web Forms应用程序。 2. **C#或VB.NET**:作为.NET Framework的一...
在这个例子中,请求路径以`/admin`开头的请求会被转发给`AdminApp`应用,而其他请求则会被转发给`MyApp`应用。 ##### 4.2 rackup `rackup`是一个命令行工具,用于启动Rack应用。通过`rackup`,开发者可以方便地...
在这个例子中,`<% %>`用于包含VBScript代码,`Response.Write`则用于向客户端输出文本。 三、VBScript与JScript ASP默认支持两种脚本语言:VBScript和JScript。VBScript是Visual Basic的简化版,语法简单直观;...
请求处理是 Modpython 中最常用的功能之一,主要涉及以下几个方面: - **请求对象**:每个请求都会被封装成一个对象,开发者可以通过这个对象来访问请求的各种属性和数据。 - **响应对象**:用于构造响应内容,包括 ...
在交互的Session模式下,意味着这个例子可能会涉及到持续的、双向的通信会话。在客户端和服务端之间,可能有一个会话管理机制,例如维持会话状态的Cookie或者Session ID,以便在多次请求之间保持上下文。这样的模式...
随着时间的推移,CMS经历了几个重要的发展阶段: - **早期阶段**:最初,CMS主要用于静态网页的管理。 - **Web 2.0时代**:随着Web 2.0概念的普及,CMS开始支持动态内容和用户交互。 - **现代CMS**:当前的CMS系统...
DOM以及广义的基于树的处理具有几个优点 399 文档对象模型(DOM)解析实例 402 DOM对象 404 DOM解析的例子: 406 SAX解析实例 409 DOM4J解析实例 412 JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到...
这本教程涵盖了ASP的所有核心概念,包括但不限于以下几个方面: 1. **ASP基础**:介绍ASP的基本结构和工作原理,如ASP页面的组成部分(HTML、脚本代码)、ASP文件的扩展名(.asp)、以及服务器如何处理ASP请求。 2...
在设计留言板时,通常会涉及以下几个关键技术点: 1. **前端设计**:前端部分负责用户交互,通常使用HTML、CSS和JavaScript实现。HTML用于构建页面结构,CSS用于样式设计,JavaScript用于添加动态功能,如表单验证...