yaozd1983/
共64个网摘 [
1 2 3 ]
下一页 |
访问yaozd1983的个人空间
yaozd1983收录,使用标签:jsp,时间:2008-3-13 13:14:34 | 相关网摘,我也收藏
内置对象:
Request,Response,Out,Session,Application,Cookie,Config,Page,Exception。
1、Request对象
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以
获取用户提交的信息。
当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的
字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象
即可。如下:
String textContent=request.getParameter("boy");
byte b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b);
* Request常用的方法:
1.01 getParameter(String strTextName) 获取表单提交的信息。
String strName=request.getParameter("name");
1.02 getProtocol() 获取客户使用的协议。
String strProtocol=request.getProtocol();
1.03 getServletPath() 获取客户提交信息的页面。
String strServlet=request.getServletPath();
1.04 getMethod() 获取客户提交信息的方式,get|post。
String strMethod = request.getMethod();
1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。
String strHeader = request.getHeader("accept");
1.06 getRermoteAddr() 获取客户的IP地址。
String strIP = request.getRemoteAddr();
1.07 getRemoteHost() 获取客户机的名称。
String clientName = request.getRemoteHost();
1.08 getServerName() 获取服务器名称。
String serverName = request.getServerName();
1.09 getServerPort() 获取服务器的端口号。
int serverPort = request.getServerPort();
1.10 getParameterNames() 获取客户端提交的所有参数的名字。
Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements()){
String s=(String)enum.nextElement();
out.println(s);
}
2、Response对象
对客户的请求做出动态的响应,向客户端发送数据。
2.1 动态响应contentType属性
当一个用户访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性时text/html,那么JSP引擎将按照这个属性值做出反应。如果要动态改变这换个属性值来响应客户,就需要使用Response对象的setContentType(String s)方法来改变contentType的属性值。
格式:response.setContentType(String s);
参数s可取text/html,application/x-msexcel,application/msword等。
2.2 Response重定向
在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。例如:
response.sendRedirect("index.jsp");
3、Session对象
(1)什么是Session对象
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
(2)Session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这换个 ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端该客户的Session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
(3)Session对象的常用方法
● public String getId():获取Session对象编号。
● public void setAttribute(String key,Object obj):将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
● public Object getAttribute(String key):获取Session对象中含有关键字的对象。
● public Boolean isNew():判断是否是一个新的客户。
4、Application对象
(1)什么时Application对象
服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都时同一个,直到服务器关闭。但是与Session对象不同的时,所有客户的Application对象都时同一个,即所有客户共享这个内置的Application对象。
(2)Application对象的常用方法
● setAttribute(String key,Object obj):将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
● getAttribute(String key):获取Application对象中含有关键字的对象。
5、Out对象
Out对象时一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。其常用方法如下。
● out.print():输出各种类型数据。
● out.newLine():输出一个换行符。
● out.close():关闭流。
6、Cookie对象
(1)什么是Cookie
Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户电脑上保存信息并且随后再取回它。
举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。
如果用户使用IE浏览器访问Web,用户就会看到所有保存在自己硬盘上的Cookie。它们最常存放的地方是:C:\Windows\Cookies。Cookie是以“关键字key=值value”的格式来保存记录的。
(2)创建一个Cookie对象
调用Cookie对象的构造函数就可以创建Cookie对象。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。
例如:Cookie c = new Cookie("username","john");
(3)将Cookie对象传送到客户端
在JSP中,如果要将封装好的Cookie对象传送到客户端,可使用Response对象的addCookie()方法。
例如:response.addCookie(c)。
(4)读取保存到客户端的Cookie
使用Request对象的getCookie()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。
例如:
Cookie[] c = request.getCookies();
if(c != null)
for(int i = 0;i < c.length;i++){
if("username".equals(c.getName()))
out.println(c.getValue());
}
(5)设置Cookie对象的有效时间
调用Cookie对象的setMaxAge()方法便可以设置Cookie对象的有效时间,
例如:Cookie c = new Cookie("username","john");
c.setMaxAge(3600);
(6)Cookie应用
Cookie对象的典型应用时用来统计网站的访问人数。由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一ID。使用Cookie,网站可以完成一下工作。
● 测定多少人访问过。
● 测定访问者有多少是新用户(即第一次来访),多少是老用户。
● 测定一个用户多久访问一次网站
当一个用户第一次访问时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数。
7、Config对象
配置对象
8、Page对象
页面对象。
PageContext对象
页面上下文对象
Jsp引入了一个名位PageContext的类,通过它可以访问页面的许多属性。
PageContext类拥有getRequest,getResponse,getOut,getSession等方法。
pageContext变量存储与当前页面相关联的PageContext对象的值。
补:
如果方法需要访问多个与页面相关的对象,
传递pageContext要比传递request,response,out等的独立引用更容易。(虽然两种方式都能达到同样的目的)
9、Exception对象
在处理异常的网页中可以直接访问exception隐式对象。
-----------------------------------补充部分--------------------------------
① out - javax.servlet.jsp.jspWriter
out对象用于把结果输出到网页上。
方法:
1. void clear() ;
清除输出缓冲区的内容,但是不输出到客户端。
2. void clearBuffer() ;
清除输出缓冲区的内容,并输出到客户端。
3. void close() ;
关闭输出流,清除所有内容。
4. void flush() ;
输出缓冲区里面的数据。
5. int getBufferSize() ;
获取以kb为单位的目前缓冲区大小。
6. int getRemaining() ;
获取以kb为单位的缓冲区中未被占用的空间大小。
7. boolean isAutoFlush() ;
是否自动刷新缓冲区。
8. void newLine() ;
输出一个换行字符。
9. void print( boolean b ) ;
void print( char c ) ;
void print( char[] s ) ;
void print( double d ) ;
void print( float f ) ;
void print( int i ) ;
void print( long l ) ;
void print( Object obj ) ;
void print( String s ) ;
将指定类型的数据输出到Http流,不换行。
10. void println( boolean b ) ;
void println( char c ) ;
void println( char[] s ) ;
void println( double d ) ;
void println( float f ) ;
void println( int i ) ;
void println( long l ) ;
void println( Object obj ) ;
void println( String s ) ;
将指定类型的数据输出到Http流,并输出一个换行符。
11. Appendable append( char c ) ;
Appendable append( CharSequence cxq, int start, int end ) ;
Appendable append( CharSequence cxq ) ;
将一个字符或者实现了CharSequence接口的对象添加到输出流的后面。
成员:
int DEFAULT_BUFFER = 0 - 缺省缓冲区大小
int NO_BUFFER = -1 - writer是否处于缓冲输出状态
int UNBOUNDED_BUFFER = -2 - 是否限制缓冲区大小
② request - javax.servlet.http.HttpServletRequest
request对象包含所有请求的信息,如请求的来源、标头、cookies和请求相关的参数值等。
方法:
1. Object getAttribute( String name ) ;
返回由name指定的属性值,该属性不存在时返回null。
2. Enumeration getAttributeNames() ;
返回request对象的所有属性名称的集合。
3. String getAuthType() ;
返回用来保护servlet的认证方法的名称,未受保护时返回null。
4. String getCharacterEncoding() ;
返回请求中的字符编码方法,可以在response对象中设置。
5. int getContentLength() ;
返回请求的BODY的长度,不能确定长度时返回-1。可以在response中设置。
6. String getContentType() ;
返回在response中定义的内容类型。
7. String getContentPath() ;
返回请求的路径。
8. Cookie[] getCookies() ;
返回客户端所有的Cookie的数组。
9. Enumeration getHeaderNames() ;
返回所有HTTP头的名称的集合。
10. Enumeration getHeaders( String name ) ;
返回指定HTTP头的所有值的集合。
11. String getHeader( String name ) ;
返回指定名称的HTTP头的信息。
12. long getDateHeader( String name ) ;
返回指定名称的Data类型的HTTP头的信息。
13. int getIntHeader( String name ) ;
返回指定名称的Int类型的HTTP头的信息。
14. ServletInputStream getInputStream() ;
返回请求的输入流。
15. Locale getLocale() ;
返回当前页的Locale对象,可以在response中设定。
16. Enumeration getLocales() ;
返回请求中所有的Locale对象的集合。
17. String getLocalName() ;
获取响应请求的服务器端主机名。
18. String getLocalAddr() ;
获取响应请求的服务器端地址。
19. int getLocalPort() ;
获取响应请求的服务器端端口
20. String getMethod() ;
获取客户端向服务器端发送请求的方法(GET、POST)。
21. String getParameter( String name ) ;
获取客户端发送给服务器端的参数值。
22. Map getParameterMap() ;
该方法返回包含请求中所有参数的一个Map对象。
23. Enumeration getParameterNames() ;
返回请求中所有参数的集合。
24. String[] getParameterValues( String name ) ;
获得请求中指定参数的所有值。
25. String getQueryString() ;
返回get方法传递的参数字符串,该方法不分解出单独的参数。
26. String getPathInfo() ;
取出请求中处于ServletPath和QueryString之间的额外信息。
27. String getPathTranslated() ;
返回用getPathInfo()方法取得的路径信息的实际路径。
28. String getProtocol() ;
返回请求使用的协议。可以是HTTP1.1或者HTTP1.0。
29. BufferedReader getReader() ;
返回请求的输入流对应的Reader对象,该方法和getInputStream()方法在一个页面中只能调用一个。
30. String getRemoteAddr() ;
获取发出请求的客户端IP地址。
31. String getRemoteHost() ;
获取发出请求的客户端主机名
32. String getRemoteUser() ;
返回经过客户端验证的用户名,未经验证返回null。
33. int getRemotePort() ;
返回发出请求的客户端主机端口。
34. String getRealPath( String path ) ;
返回给定虚拟路径的物理路径。
35. RequestDispatcher getRequestDispatcher( String path ) ;
按给定的路径生成资源转向处理适配器对象。
36. String getRequestedSessionId() ;
返回请求的session的标识。
37. String RequestURI() ;
返回发出请求的客户端地址,但是不包括请求的参数字符串。
38. StringBuffer getRequestURI() ;
返回响应请求的服务器端地址
39. String getScheme() ;
获取协议名称,缺省值为HTTP协议。
40. String getServerName() ;
返回响应请求的服务器名称。
41. String getServletPath() ;
获取客户端所请求的脚本文件的文件路径。
42. int getServerPort() ;
获取响应请求的服务器端主机端口号。
43. void removeAttribute( String name ) ;
在属性列表中删除指定名称的属性。
44. void setAttribute( String name, Object value ) ;
在属性列表中添加/删除指定的属性。
45. void setCharacterEncoding( String name ) ;
设置请求的字符编码格式。
46. HttpSession getSession() ;
HttpSession getSession( boolean create ) ;
获取session,如果create为true,在无session的情况下创建一个。
47. boolean isRequestedSessionIdFromCookie() ;
检查请求的会话ID是否为通过Cookie传入。
48. boolean isRequestedSessionIdFromURL() ;
检查请求的会话ID是否为通过URL传入。
49. boolean isRequestedSessionIdValid() ;
检查请求的会话ID是否仍然有效。
50. boolean isSecure() ;
检查请求是否使用安全链接,如果HTTPS等。
51. boolean isUserInRole( String role ) ;
检查已经通过验证的用户是否在是role所指定的角色。
52. Principal getUserPrincipal() ;
返回包含用户登陆名的一个java.security.Principal对象。
成员:
String BASIC_AUTH = "BASIC" -
String CLIENT_CERT_AUTH = "CLIENT_CERT" -
String DIGEST_AUTH = "DIGEST" -
String FORM_AUTH = "FORM" -
③ response - javax.servlet.http.HttpServletResponse
response对象主要将JSP容器处理后的结果传回到客户端。
方法:
1. void addCookie( Cookie cookie ) ;
添加一个Cookie对象,保存客户端信息。
2. void addDateHeader( String name, long value ) ;
添加一个日期类型的HTTP头信息,覆盖同名的HTTP头信息。
3. void addHeader( String name, String value ) ;
添加一个HTTP头,覆盖同名的旧HTTP头。
4. void addIntHeader( String name, int value ) ;
添加一个整型的HTTP头,覆盖同名的旧HTTP头。
5. boolean containsHeader( String name ) ;
判断指定的HTTP头是否存在。
6. String encodeRedirectURL( String url ) ;
对sendRedirect()方法使用的URL进行编码。
7. String encodeURL( String url ) ;
将URL予以编码,回传包含session ID的URL。
8. void flushBuffer() ;
强制把当前缓冲区的内容发送到客户端。
9. int getBufferSize() ;
取得以kb为单位的缓冲区大小。
10. String getCharacterEncoding() ;
获取响应的字符编码格式。
11. String getContentType() ;
获取响应的类型。
12. Locale getLocale() ;
获取响应的Locale对象。
13. ServletOutputStream getOutputStream() ;
返回客户端的输出流对象。
14. PrintWriter getWriter() ;
获取输出流对应的writer对象。
15. boolean isCommitted() ;
判断服务器端是否已经将数据输出到客户端。
16. void reset() ;
清空buffer中的所有内容。
17. void resetBuffer() ;
情况buffer中所有的内容,但是保留HTTP头和状态信息。
18. void sendError( int xc, String msg ) ;
void sendError( int xc ) ;
发送错误,包括状态码和错误信息。
19. void sendRedirect( String locationg ) ;
把响应发送到另外一个位置进行处理。
20. void setBufferSize( int size ) ;
设置以kb为单位的缓冲区大小。
21. void setCharacterEncoding( String charset ) ;
设置响应使用的字符编码格式。
22. void setContentLength( int length ) ;
设置响应的BODY长度。
23. void setContentType( String type ) ;
设置响应的类型。
24. void setDateHeader( String name, long value ) ;
设置指定名称的Data类型的HTTP头的值。
25. void setHeader( String name, String value ) ;
设置指定名称的HTTP头的值。
26. void setIntHeader( String name, int value ) ;
设置指定名称的int类型的HTTP头的值。
27. void setStatus( int xc ) ;
设置响应状态码,新值会覆盖当前值。
成员(HTTP状态码):
int SC_CONTINUE = 100 int SC_SWITCHING_PROTOCOLS = 101
int SC_OK = 200 int SC_NON_AUTHORITATIVE_INFORMATION = 203
int SC_ACCEPTED = 202 int SC_CREATED = 201
int SC_NO_CONTENT = 204 int SC_RESET_CONTENT = 205
int SC_PARTIAL_CONTENT = 206 int SC_MULTIPLE_CHOICES = 300
int SC_MOVED_PERMANENTLY = 301 int SC_MOVED_TEMPORARILY = 302
int SC_FOUND = 302 int SC_SEE_OTHER = 303
int SC_NOT_MODIFIED = 304 int SC_USE_PROXY = 305
int SC_TEMPORARY_REDIRECT = 307 int SC_BAD_REQUEST = 400
int SC_UNAUTHORIZED = 401 int SC_PAYMENT_REQUIRED = 402
int SC_FORBIDDEN = 403 int SC_NOT_FOUND = 404
int SC_METHOD_NOT_ALLOWED = 405 int SC_NOT_ACCEPTABLE = 406
int SC_PROXY_AUTHENTICATION_REQUIRED = 407 int SC_REQUEST_TIMEOUT = 408
int SC_CONFLICT = 409 int SC_GONE = 410
int SC_LENGTH_REQUIRED = 411 int SC_PRECONDITION_FAILED = 412
int SC_REQUEST_ENTITY_TOO_LARGE = 413 int SC_REQUEST_URI_TOO_LONG = 414
int SC_UNSUPPORTED_MEDIA_TYPE = 415 int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416
int SC_EXPECTATION_FAILED = 417 int SC_INTERNAL_SERVER_ERROR = 500
int SC_NOT_IMPLEMENTED = 501 int SC_BAD_GATEWAY = 502
int SC_SERVICE_UNAVAILABLE = 503 int SC_GATEWAY_TIMEOUT = 504
int SC_HTTP_VERSION_NOT_SUPPORTED = 505
④ session - javax.servlet.http.HttpSession
session对象表示目前个别用户的会话状态,用来识别每个用户。
方法:
1. Object getAttribute( String name ) ;
获取与指定名字相关联的session属性值。
2. Enumeration getAttributeNames() ;
取得session内所有属性的集合。
3. long getCreationTime() ;
返回session的创建时间,最小单位千分之一秒。
4. String getId() ;
取得session标识。
5. long getLastAccessedTime() ;
返回与当前session相关的客户端最后一次访问的时间,由1970-01-01算起,单位毫秒。
6. int getMaxInactiveInterval( int interval ) ;
返回总时间,以秒为单位,表示session的有效时间(session不活动时间)。-1为永不过期。
7. ServletContext getServletContext() ;
返回一个该JSP页面对应的ServletContext对象实例。
8. HttpSessionContext getSessionContext() ;
9. Object getValue( String name ) ;
取得指定名称的session变量值,不推荐使用。
10. String[] getValueNames() ;
取得所有session变量的名称的集合,不推荐使用。
11. void invalidate() ;
销毁这个session对象。
12. boolean isNew() ;
判断一个session是否由服务器产生,但是客户端并没有使用。
13. void pubValue( String name, Object value ) ;
添加一个session变量,不推荐使用。
14. void removeValue( String name ) ;
移除一个session变量的值,不推荐使用。
15. void setAttribute( String name, String value ) ;
设置指定名称的session属性值。
16. void setMaxInactiveInterval( int interval ) ;
设置session的有效期。
17. void removeAttribute( String name ) ;
移除指定名称的session属性。
⑤ pageContext - javax.servlet.jsp.PageContext
pageContext对象存储本JSP页面相关信息,如属性、内建对象等。
方法:
1. void setAttribute( String name, Object value, int scope ) ;
void setAttribute( String name, Object value ) ;
在指定的共享范围内设置属性。
2. Object getAttribute( String name, int scope ) ;
Object getAttribute( String name ) ;
取得指定共享范围内以name为名字的属性值。
3. Object findAttribute( String name ) ;
按页面、请求、会话和应用程序共享范围搜索已命名的属性。
4. void removeAttribute( String name, int scope ) ;
void removeAttribute( String name ) ;
移除指定名称和共享范围的属性。
5. void forward( String url ) ;
将页面导航到指定的URL。
6. Enumeration getAttributeNamesScope( int scope ) ;
取得指定共享范围内的所有属性名称的集合。
7. int getAttributeScope( String name ) ;
取得指定属性的共享范围。
8. ErrorData getErrorDate() ;
取得页面的errorData对象。
9. Exception getException() ;
取得页面的exception对象。
10. ExpressionEvaluator getExpressionEvaluator() ;
取得页面的expressionEvaluator对象。
11. JspWriter getOut() ;
取得页面的out对象。
12. Object getPage() ;
取得页面的page对象。
13. ServletRequest getRequest() ;
取得页面的request对象。
14. ServletResponse getResponse() ;
取得页面的response对象。
15. ServletConfig getConfig() ;
取得页面的config对象。
16. ServletContext getServletContext() ;
取得页面的servletContext对象。
17. HttpSession getSession() ;
取得页面的session对象。
18. VariableResolver getVariableResolver() ;
取得页面的variableResolver对象。
19. void include( String url, boolean flush ) ;
void include( String url ) ;
包含其他的资源,并指定是否自动刷新。
20. void release() ;
重置pageContext内部状态,释放所有内部引用。
21. void initialize( Servlet servlet, ServletRequest request, ServletResponse response,
String errorPageURL, boolean needSession, int bufferSize, boolean autoFlush ) ;
初始化未经初始化的pageContext对象。
22. BodyContext pushBody() ;
BodyContext pushBody( Writer writer ) ;
保存当前的out对象,并更新pageContext中page范围内的out对象。
23. JspWrite popBody() ;
取出由pushBody()方法保存的out对象。
24. void handlePageException( Exception e ) ;
void handlePageException( Thrwoable t ) ;
成员:
int PAGE_SCOPE = 1 - 页面共享范围
int REQUEST_SCOPE = 2 - 请求共享范围
int SESSION_SCOPE = 3 - 会话共享范围
int APPLICATION_SCOPE = 4 - 应用程序共享范围
String PAGE = "javax.servlet.jsp.jspPage"
String PAGECONTEXT = "javax.servlet.jsp.jspPageContext"
String REQUEST = "javax.servlet.jsp.jspRequest"
String RESPONSE = "javax.servlet.jsp.jspResponse"
String CONFIG = "javax.servlet.jsp.jspConfig"
String SESSION = "javax.servlet.jsp.jspSession"
String OUT = "javax.servlet.jsp.jspOut"
String APPLICATION = "javax.servlet.jsp.jspApplication"
String EXCEPTION = "javax.servlet.jsp.jspException"
⑥ application - javax.servlet.ServletContext
application主要功用在于取得或更改Servlet的设定。
方法:
1. Object getAttribute( String name ) ;
返回由name指定的application属性。
2. Enumeration getAttributes() ;
返回所有的application属性。
3. ServletContext getContext( String uripath ) ;
取得当前应用的ServletContext对象。
4. String getInitParameter( String name ) ;
返回由name指定的application属性的初始值。
5. Enumeration getInitParameters() ;
返回所有的application属性的初始值的集合。
6. int getMajorVersion() ;
返回servlet容器支持的Servlet API的版本号。
7. String getMimeType( String file ) ;
返回指定文件的类型,未知类型返回null。一般为"text/html"和"image/gif"。
8. int getMinorVersion() ;
返回servlet容器支持的Servlet API的副版本号。
9. String getRealPath( String path ) ;
返回给定虚拟路径所对应物理路径。
10. RequestDispatcher getNamedDispatcher( String name ) ;
为指定名字的Servlet对象返回一个RequestDispatcher对象的实例。
11. RequestDispatcher getRequestDispatcher( String path ) ;
返回一个RequestDispatcher对象的实例。
12. URL getResource( String path ) ;
返回指定的资源路径对应的一个URL对象实例,参数要以"/"开头。
13. InputStream getResourceAsStream( String path ) ;
返回一个由path指定位置的资源的InputStream对象实例。
14. Set getResourcePaths( String path ) ;
返回存储在web-app中所有资源路径的集合。
15. String getServerInfo() ;
取得应用服务器版本信息。
16. Servlet getServlet( String name ) ;
在ServletContext中检索指定名称的servlet。
17. Enumeration getServlets() ;
返回ServletContext中所有servlet的集合。
18. String getServletContextName() ;
返回本web应用的名称。
19. Enumeration getServletContextNames() ;
返回ServletContext中所有servlet的名称集合。
20. void log( Exception ex, String msg ) ;
void log( String msg, Throwable t ) ;
void log( String msg ) ;
把指定的信息写入servlet log文件。
21. void removeAttribute( String name ) ;
移除指定名称的application属性。
22. void setAttribute( String name, Object value ) ;
设定指定的application属性的值。
⑦ config - javax.servlet.ServletConfig
config对象用来存放Servlet初始的数据结构。
方法:
1. String getInitParameter( String name ) ;
返回名称为name的促使参数的值。
2. Enumeration getInitParameters() ;
返回这个JSP所有的促使参数的名称集合。
3. ServletContext getContext() ;
返回执行者的servlet上下文。
4. String getServletName() ;
返回servlet的名称。
⑧ exception - java.lang.Throwable
错误对象,只有在JSP页面的page指令中指定isErrorPage="true"后,才可以在本页面使用exception对象。
方法:
1. Throwable fillInStackTrace() ;
将当前stack信息记录到exception对象中。
2. String getLocalizedMessage() ;
取得本地语系的错误提示信息。
3. String getMessage()
取得错误提示信息。
4. StackTrackElement[] getStackTrace() ;
返回对象中记录的call stack track信息。
5. Throwable initCause( Throwable cause ) ;
将另外一个异常对象嵌套进当前异常对象中。
6. Throwable getCause() ;
取出嵌套在当前异常对象中的异常。
7. void printStackTrace() ;
void printStackTrace( printStream s ) ;
void printStackTrace( printWriter s ) ;
打印出Throwable及其call stack trace信息。
8. void setStackTrace( StackTraceElement[] stackTrace )
设置对象的call stack trace信息。
⑨ page - javax.servlet.jsp.HttpJspPage
page对象代表JSP对象本身,或者说代表编译后的servlet对象,
可以用( (javax.servlet.jsp.HttpJspPage)page )来取用它的方法和属性。
http://blog.csdn.net/lenhan12345/archive/2007/04/16/1566594.aspx
yaozd1983收录,时间:2008-3-12 13:29:30 | 相关网摘,我也收藏
如何识别优秀的程序员?并不是像听起来那么容易。在这儿工作经验的作用是很有限的,因为伟大的程序员不一定要‘正式’的工作经历来证明他们的伟大。
1,激情。
我曾经遇到许多“职业程序员”,他们从事IT是因为觉得这是一种职业,他们只在工作时间编程,除非送去培训否则他们不会学习新东西,这不是好的程序员。我认为一个好的程序员总是对编程充满激情,而且好的开发者会做一些编程工作即使这没有报酬。激情是一个优秀程序员的重要指标。
2,自学好学
编程领域始终发展变化着,不出一年有些新技术就变成了老技术,这并不是说好的程序员要对所有新技术跟进,但有些却对学习任何新技术都没有兴趣。他们通常在学校学习了编程,然后工作后单位安排学什么就学什么。如果在招聘中你听到“让我培训一个星期我就会胜任这个工作”那不要雇佣他。实际上,真正优秀的程序员始终谈论着你所不知道的新技术,向人们解释为什么你必须用这个技术,哪怕没有听众听得明白,哪怕他自己也不明白。
3,聪明
聪明包括很多因素,情绪和社会交际只是其中之一。好的程序员绝不木讷,他们是最聪明的人,他们中的许多善于交际,健谈、兴趣广泛。
4,隐性的经验
—好的程序员通。常有自己的私人的一些研究、爱好、项目,而这些是他们不写在简历上 (通常觉得不值得写),但表现出来却可能恰恰是他的潜能、深度和后劲所在。
5,技术多样性
由于好的程序员喜欢学习和涉猎新技术,所以一般来说超过22岁的都熟知很多新技术,而且对多种技术的长短有 “强烈”的个人意见/见解,喜好尝试新鲜技术。
6,资格证书
资格证书并不是识别真正程序员的方法,MCSE、SCJP、说明不了什么,它们只是让别人认识和获取的,顶多代表这个人在某个技术有一定的知识。
原文作者在文末写道:以上所说的标准并不是绝对的,因为有些优秀的程序员确实不符合上述,而有些bad程序员却符合了。但相信这些对大多数真正的程序员都适用。
总结而言,优秀的程序员通常有一下特点:
n 对技术充满激情;
n 将编程作为一种爱好
n 如果你允许会滔滔不绝地跟你谈论技术
n 有过个人的开发经历(与4意思相同)
n 坚持认为某种技术最好
n 如果让他用他认为不好的技术他会非常别扭
n 聪明、健谈、兴趣广泛
n 在大学和工作前就开始接触程序
http://news.csdn.net/n/20080117/112853.html
yaozd1983收录,使用标签:struts,时间:2007-11-21 16:02:45 | 相关网摘,我也收藏
Struts 1.2 其实已经大不同,只要大家有简约的态度,即使我们日常的Struts,同样可以写得非常精简,不一定要如传统观念认为的那么繁重,从而节约每天编码的时间。
Struts与Spring结合的基本知识请阅读Struts使用要点。
1.DispatchAction
以一个Controller响应一组动作绝对是Controller界的真理,Struts的DispatchAction同样可以做到这点。
其中parameter="method" 设置了用来指定响应方法名的url参数名为method,即/admin/user.do?method=list 将调用UserAction的public ActionForward list(....) 函数。
public ActionForward unspecified(....) 函数可以指定不带method方法时的默认方法。
2.No FormBean
Struts 1.2.7 之后一共有三种方法,不需要定义FormBean Java类也不需要在struts-config.xml里详细定义formBean的每个属性。
第一种是appfuse里使用的,定义DynaValidatorForm里,内嵌一个pojo属性.
//取得form DynaActionForm userForm = (DynaActionForm) form;User user = (User) userForm.get("user");//设置formuserForm.set("user",user);
第二种是用BeanValidatorForm,直接把Pojo作FormBean,无需继承于FormBean接口。
//取得form BeanValidatorForm userForm = (BeanValidatorForm) form;User user = (User) userForm.getInstance();//设置formBeanUtils.copyProperties(userForm, user);
第3种是用LazyValidatorForm ,特别适合于FormBean中并不包含POJO商业对象所有属性的情况,因为通常项目里都属于这种情况,所以springside默认使用lazyValidatorForm.
比如User对象 有 id,name,status三个属性,而form表单中只有id和name两个input框,如果使用方法1,2,直接把user 作为 form bean, user对象的status因为没设值,将为null, copy 到作为商业对象的user时,就会以null覆盖原值。而lazyBean就没有这个问题,如果form中没有status属性,它不会将它copy给商业对象。
另外,apache commons-beantuils 1.7.0的lazybean仍有小bug,需要使用commons-1.7.1 snapshot版,而且它直接提供下载的snapshot版缺少了几个class,应使用springside提供的版本。
BeanUtils.copyProperties(user, form);
注意User对象被自动绑定,默认Integer id 在空值时会被赋值为0,需要增加converter,让其默认为null,虽然也可以在web.xml里进行相关配置,但还是在基类里配置了比较安全。
static {ConvertUtils.register(new IntegerConverter(null), Integer.class);}
3. struts-config.xml使用通配符
对一些CRUD的Action,可以使用通配符,如果这批action里某个action某个方法还存在特殊路径,可以在代码里直接new ActionForward("/foo.jsp");
4. 一些不必受困于Struts机制的简化写法
一些简便直接的方法,大家可不必太受困于Struts的机制:
4.1 不在struts-config.xml配置jsp路径,直接在代码里跳转
用于某些需要在代码里动态拼装的路径:
return new ActionForward("/foo/bar.jsp");orreturn new ActionForward("/foo/bar.jsp",true);//redirect
4.2 不走jsp,直接输出字符串
ActionForward execute(....){ try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(text); } catch (IOException e) { log.error(e); } return null;}
4.3. 不依赖Struts Taglib,EL直接输出FormBean 属性
普通FormBean:${bookForm.image}
LazyValidatorForm:${bookForm.map.image}
其中bookForm 是formBean名。另一种输出属性的方式是使用jodd-form, 设
4.4 不用i18N地使用Message与Error
Struts的ActionMessages很常用,但只接收i18N的key作为输入参数,老定义i18n很麻烦,偏方之一就是设一个message= {0},然后直接new ActionMessage("message", message);
5. 终极化简--StrutsEntityAction
SpringSide封装的EnttiyCRUDAction,,每个包含了CRUD操作的Action仅需如下代码,详细请阅读SpringSide的Struts封装
public class UserAction extends StrutsEntityAction { private UserManager userManager; public void setUserManager(UserManager userManager) { this.userManager = userManager; } }
http://blog.csdn.net/zhijie435/archive/2007/02/02/1501515.aspx
yaozd1983收录,使用标签:vmware,时间:2007-11-20 15:34:35 | 相关网摘,我也收藏
VMware Workstation 从软盘和/或 CD-ROM 直接安装未修改的操作系统。在构造一台虚拟机时,这个安装过程是第一步并且也是唯一必需的一步。但是,VMware 强烈建议你在每一台虚拟机中完成操作系统安装之后立即安装 VMware Tools 套件。在客户操作系统中安装 VMware Tools 非常重要。如果你不安装 VMware Tools,虚拟机中的图形环境被限制为 VGA 模式图形(640x480,16 色)。使用 VMware Tools,SVGA 驱动程序被安装,VMware Workstation 支持最高 32 位显示和高显示分辨率,显著提升总体的图形性能。 工具包中的其他工具通过支持下面的增强,让你更方便地使用你的虚拟机。注意,只有正在运行 VMware Tools 时,这些增强才可用。
1.在主机和客户机之间时间同步
注释: 只有当你在客户操作系统中设置时钟为一个比在主机中设置的时间更早的时间时,才可以在客户和主机操作系统之间同步时间。
2.自动捕获和释放鼠标光标
3.在主机和客户机之间或者从一台虚拟机到另一台虚拟机进行复制和粘贴操作
4.改善的网络性能
http://blog.csdn.net/dzassn/archive/2007/05/31/1633577.aspx
yaozd1983收录,时间:2007-11-5 17:20:18 | 相关网摘,我也收藏
可能有很多朋友在网上看过google公司早几年的招聘广告,它的第一题如下了:{first 10-digit prime found in consecutive digits e}.com,e中出现的连续的第一个10个数字组成的质数。据说当时这个试题在美国很多地铁的出站口都有大幅广告,只要正确解答了这道题,在浏览器的地址栏中输入这个答案,就可以进入下一轮的测试,整个测试过程如同一个数学迷宫,直到你成为google的一员。又如Intel某年的一道面试题目:巴拿赫病故于1945年8月31日。他的出生年份恰好是他在世时某年年龄的平方,问:他是哪年出生的?这道看似很简单的数学问题,你能不能能快地解答呢?下面则是一道世界第一大软件公司微软的招聘测试题:中间只隔一个数字的两个素数被称为素数对,比如5和7,17和19,证明素数对之间的数字总能被6整除(假设这两个素数都大于6),现在证明没有由三个素数组成的素数对。这样的试题还有很多很多,这些题目乍初看上去都是一些数学问题。但是世界上一些著名的公司都把它们用于招聘测试,可见它们对新员工数学基础的重视。数学试题与应用程序试题是许多大型软件公司面试中指向性最明显的一类试题,这些试题就是考察应聘者的数学能力与计算机能力。某咨询公司的一名高级顾问曾说:微软是一家电脑软件公司,当然要求其员工有一定的计算机和数学能力,面试中自然就会考察这类能力。微软的面试题目就考察了应聘人员对基础知识的掌握程度、对基础知识的应用能力,甚至暗含了对计算机基本原理的考察。所以,这样的面试题目的确很“毒辣”,足以筛选到合适的人。
http://blog.csdn.net/LoveLion/archive/2006/10/25/1350127.aspx
yaozd1983收录,使用标签:cvs,时间:2007-10-18 15:49:44 | 相关网摘,我也收藏
update 和 checkout 在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:
U file
文件按要求从仓库得到更新。用在那些仓库里面有但你的工作目录没有的文件,以及工作目录里面没有修改过,但旧于仓库的文件。
P file
类似 `U',但是 cvs 服务器发送的是补丁而不是整个文件。完成与 `U' 同样的工作,但降低带宽的使用。
A file
添加到你的私人副本中,当你使用 commit 后会加到仓库。这可以提醒你需要提交文件。
R file
从你的私人副本中删除,当你执行 commit 命令后会从仓库清除。这可以提醒你文件需要提交。
M file
在你的工作目录中,文件已经修改。
`M' 可以标明你工作的文件的两种状态: 同样的文件仓库里面没有修改,你的文件仍保持原样; 或者仓库里面的文件也有修改,但在工作目录里成功合并,没有冲突发生。
如果合并,cvs 将打印一些信息,并建立工作文件的备份(与 update 执行前相同)。update 运行时会打印相应的名字。
C file
合并你与仓库中修改到 file 时检测到冲突。file (你工作目录里面的副本) 是合并两个修订版的结果; 工作目录里面还有未修改文件的副本,名为 .#file.revision,其中 revision 是你修改的文件所基于的修订版。解决冲突见 Conflicts example 说明。 (注意,在有些系统里面,如果一段日子没有访问 .# 起头的文件,系统会自动清除。如果你需要保留这些原始的文件副本,最好将其改名) vms 系统中,文件名以 __ 开始,而不是 .#。
? file
file 处于工作目录,但是仓库里面没有对应的文件,它们也不是 cvs 忽略的文件(参见 `-I' 选项的说明,以及 参阅 cvsignore)。
update的几个常用参数:
-D date
使用不迟于 date 的最新修订版。这是一个粘性的选项,含有 `-P'。见 Sticky tags,了解更多粘性标签/日期的信息。
-f
只与 `-D' 或 `-r' 标识一起使用。如果没有匹配的修订版,获取最新的修订版(而不是忽略这些文件)。
-k kflag
根据 kflag 处理关键字。参阅 Keyword substitution。此选项是粘性的; 以后在这个工作目录里面更新,还是使用相同的 kflag。status 命令可以看到粘性的选项。参阅 Invoking CVS,了解 status 命令的信息。
-l
只在当前工作目录里面执行。 参阅 Recursive behavior.
-P
清除空目录。参阅 Moving directories.
-p
管道方式输出到标准输出。
-R
递归方式检出(默认)。 参阅 Recursive behavior.
-r tag[:date]
获得 rev 修订版/标签,或者当 date 指定,并且 tag 是分支标签,分支 tag 上的版本可以当作是在 date 上。此选项是粘性的,含`-P'。参阅 Sticky tags 和 Common options 了解更多粘性标签/日期的信息。
update 还有一些特殊的选项。
-A
重置任何的粘性标签,日期,或 `-k' 选项。参阅Sticky tags,了解更多粘性标签/日期的信息。
-C
用仓库里面干净的副本覆盖本地的修改(但修改过的文件另存为 .#file.revision)。
-d
创建仓库里面存在而工作目录里面没有的目录。通常,update 只作用于你工作目录里面已经存在的文件和目录。
此选项通常用来更新最初检出创建的目录; 但也有不好的副作用。如果你在建立工作目录时,刻意避免仓库里面的某些目录(通过模块名,或在命令行上明确指定所需的文件和目录),用 `-d' 选项更新将创建这些你不想要的目录。
-I name
更新时忽略匹配 name 的文件(在工作目录里面)。你可以在命令行上多次使用 `-I' 指定多个要忽略的文件。`-I !' 可以避免忽略任何文件。参阅 cvsignore, 了解 cvs 忽略文件的其他方式。
-Wspec
指定更新时需要过滤的文件名。你可以重复使用此选项。
spec 可以是文件名模板,与 .cvswrappers 文件里面的类型相同。参阅 Wrappers.
-jrevision
通过两个 `-j' 选项,合并第一个 `-j' 选项指定的修订版至第二个 `j' 选项修订版的变更到工作目录。
使用一个 `-j' 选项,合并最初的修订版至 `-j' 选项指定修订版的变更到工作目录。最初的修订版是工作目录文件基于的修订版和 `-j' 选项指定修订版共同的祖先。
注意使用 `-j tagname' 选项而不是 `-j branchname',合并的通常不是从分支上删除文件的变更。参阅 Merging adds and removals, 了解详细情况。
另外,每个 `-j' 选项可以包含可选的日期规格,当用于分支时,可以限制修订版处于指定日期之内。可选的日期通过分号(:)加在标签里面: `-jSymbolic_Tag:Date_Specifier'.
http://blog.csdn.net/put2006/archive/2005/08/24/464318.aspx
共64个网摘 [
1 2 3 ]
下一页