03

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。
common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。
下载后解压zip包,将commons-fileupload-1.0.jar复制到tomcat的webapps\你的webapp\WEB-INF\lib\下,目录不存在请自建目录。
新建一个servlet: Upload.java用于文件上传: 阅读全文 »

作者:堕落天使 Tags: , ,

29

页面端(login.jsp):

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <TITLE>Ajax验证用户名是否存在例子</TITLE>
 <script>
 
 //设一个变量
 
 var XMLHttpReq=false;
  //创建一个XMLHttpRequest对象
  function createXMLHttpRequest(){
    if(window.XMLHttpRequest){ //Mozilla
     XMLHttpReq=new XMLHttpRequest();
     }
     else if(window.ActiveXObject){
      try{
       XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP");
       }catch(e){
        try{
         XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
         }catch(e){}
         }
        }
       }
  //发送请求函数
  function send(url){
   createXMLHttpRequest();
   XMLHttpReq.open("get",url,true);
   XMLHttpReq.onreadystatechange=proce;   //指定响应的函数
   XMLHttpReq.send(null);  //发送请求
   }
  function proce(){
   if(XMLHttpReq.readyState==4){ //对象状态
    if(XMLHttpReq.status==200){//信息已成功返回,开始处理信息    
                <!–测试读取xml开始–>
    var root=XMLHttpReq.responseXML;
    var res=root.getElementsByTagName("content")[0].firstChild.data;
    window.alert(res);
     <!–测试读取xml结束–>  
    //var xmlReturn = XMLHttpReq.responseText;
    //window.alert(xmlReturn);
    }else{
     window.alert("所请求的页面有异常");
     }
     }
     } 阅读全文 »

作者:堕落天使 Tags: ,

12

回到原点,重新认识
  一、page 对象

page对象代表JSP本身,更准确地说它代表JSP被转译后的Servlet,它可以调用Servlet类所定义的方法。

  二、config 对象

config 对象里存放着一些Servlet 初始的数据结构。
config 对象实现于javax.servlet.ServletConfig 接口,它共有下列四种方法:
public String getInitParameter(name)
public java.util.Enumeration getInitParameterNames( )
public ServletContext getServletContext( )
public Sring getServletName( )

  三、request 对象

request 对象包含所有请求的信息,如:请求的来源、标头、cookies和请求相关的参数值等等。
request 对象实现javax.servlet.http.HttpServletRequest接口的,所提供的方法可以将它分为四大类: 阅读全文 »

作者:堕落天使 Tags: ,

11

request:pageContext.getRequest();
session:pageContext.getSession();
application:pageContext.getServletContext();
response:pageContext.getResponse();

pageContext隱含物件對應於javax.servlet.jsp.PageContext型態之物件,隱含物件都自動的被加入至pageContext中,您可以藉由它來取得與JSP相關的隱含物件對應之Servlet物件,像是getRequest()可以取得ServletRequest,getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等。提供取得隱含物件對應之Servlet物件並不是pageContext的主要作用,它的主要功能在提供一個單一個介面,以管理各種的公開物件(像是HttpSession、ServletContext、ServletConfig、ServletRequest、ServletResponse等等),提供一個單一的API來管理屬性作用範圍等等。

我們之前曾經使用過session的setAttribute()等方法設定一個進程可以共用的屬性物件,使用session設定的屬性在同一個進程中可以共用,除了session之外,還有pageContext、request、application也都可以使用setAttribute()之類的方法(詳請查閱API文件)來設定可以共用的屬性物件,只不過這四個物件所設定的屬性其共用範圍各不相同。 阅读全文 »

作者:堕落天使 Tags: ,

09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package cn.org.jock.http.listener;
 
import java.util.Hashtable;
import java.util.Iterator;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @author jock
*
*/
public class SessionListener implements HttpSessionListener {
 // 集合对象,保存session 对象的引用
 static Hashtable<String,HttpSession> ht = new Hashtable<String,HttpSession>();
 // 实现HttpSessionListener接口,完成session创建事件控制
 public void sessionCreated(HttpSessionEvent arg0) {
   HttpSession session = arg0.getSession();
   ht.put(session.getId(), session);
   System.out.println("create session :" + session.getId());
 }
 
 // 实现HttpSessionListener接口,完成session销毁事件控制
 public void sessionDestroyed(HttpSessionEvent arg0) {
   HttpSession session = arg0.getSession();
   System.out.println("destory session :" + session.getId());
   ht.remove(session.getId());
 }
 
 // 返回全部session对象集合
 
 static public Iterator getSet() {
   return ht.values().iterator();
 }
 
 // 依据session id返回指定的session对象
 static public HttpSession getSession(String sessionId) {
   return (HttpSession) ht.get(sessionId);
 }
 
}

别忘了在web.xml里加上
<listener>
   <listener-class>cn.org.jock.http.listener.SessionListener</listener-class>
</listener>

有了这个就可以方便的做很多事了,统计在线人数、在线列表、用户单一登陆等等,自己扩展吧。

作者:堕落天使 Tags: , ,