??xml version="1.0" encoding="utf-8" standalone="yes"?>
加入log4j.properties到src
log4j.properties内容Q?br />log4j.rootLogger=debug,A1,R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%n%d [%5p] %l%n%m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=megoods_log.txt
log4j.appender.R.MaxFileSize=500KB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%n%d [%5p] %l%n%m%n
上面R配置为最多?0?00K的日志?br />使用Q?br />private static Log log = LogFactory.getLog(xxx.class);
log.debug("xxx");
log.info("xxx");
log.warn("xxx");
log.error("xxx");
log.fatal("xxx");
log4是具有日志记录功能,主要通过一个配|文件来对程序进行监?br />有两U配|方式:(x)一U程序配|,一U文仉|?br />有三个主要单元要?jin)解QLogger,appender,layout.
logger是进行记录的主要c,appender是记录的方式Qlayout是记录的格式
logger七种日志U别Qdebug,info,warn,error,fatal,all,off
最常用的应该是debug()和info()Q而warn()、error()、fatal()仅在相应事g发生后才使用
appender主要分三c,l端输出Q文件输出,输?br />ConsoleAppender
FileAppender
WriterAppender
layout也分三类Q简单格式,html格式Q匹配格?br />SimpleLayout
HTMLLayout
PatternLayout
输出写:(x)Q用在PatternLayout)
%m 输出代码中指定的消息
%p 输出优先U?br />%r 输出自应用启动到输出该log信息耗费的毫U数
%c 输出所属的cȝQ通常是所在类的全?br />%t 输出产生该日志事件的U程?br />%n 输出一个回车换行符QW(xu)indowsq_为“\r\n”,Unixq_为“\n?br />%d 输出日志旉点的日期或时_(d)默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyy MMM dd HH:mm:ss,SSS}Q输出类|(x)2002q?0?8?22Q?0Q?8Q?21
%l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以?qing)在代码中的行数。一般用了(jin)它就不需使用%c?/p>
作用实例Q?br />E序配置一般过E:(x)
1.得到特定名称的logger
2.得到其中一个layout
3.Ҏ(gu)layout得到appender
4.loggerdappender
5.logger讄U别
6.logger输出有别的日志信息
E序Q?br />Logger logger = Logger.getLogger(Test.class.getName()) (tng) (tng) (tng) (tng) //取得logger
SimpleLayout simpleLayut = new SimpleLayout() (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //取得layout
FileAppender fa = new FileAppender(simpleLayout,"test.log") //取得appender
logger.addAppender(fa) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //dappender
logger.set((Level)Level.DEBUG) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //讄U别
logger.debug("hihihihih") (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) //记录信息
文g配置q程Q?br />1.得到特定名称的logger
2.加蝲配置文g (tng) (tng) (tng) (tng) (tng) (配置文g做了(jin)Q-Q的工作)
3.logger输出有别的日志信息
文g配置E序Q?br />1.Logger logger = Logger.getLogger(Test.class.getName()) (tng) (tng) (tng) (tng) //取得logger
2.使用下面的配|加?br />3.输出信息
文g配置分properties,xml
dpropertiesQ?br />PropertyConfigurator.configure("logTest.properties");
dxmlQ?br />DOMConfigurator.configure("src/logTest.xml");
在客L(fng)昄一个注?
JSP 语法
<!-- comment [ <%= expression %> ] -->
例子 1
<!-- This file displays the user login screen -->
在客L(fng)的HTML源代码中产生和上面一L(fng)数据Q?
<!-- This file displays the user login screen -->
例子 2
<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
在客L(fng)的HTML源代码中昄?
<!-- This page was loaded on January 1, 2000 -->
描述
q种注释和HTML中很像,也就是它可以?查看源代?中看到?/p>
唯一有些不同的就是,你可以在q个注释中用表达式(例子2所C?。这个表辄是不定的Q由面不同而不同,你能够用各U表辑ּQ只要是合法的就行?/p>
写在JSPE序中,但不是发l客戗?
JSP 语法
<%-- comment --%>
例子Q?/p>
<%@ page language="java" %>
<html>
<head><title>A Comment Test</title></head>
<body>
<h2>A Test of Comments</h2>
<%-- This comment will not be visible in the page source --%>
</body>
</html>
描述
用隐藏注释标记的字符?x)在JSP~译时被忽略掉。这个注释在你希望隐藏或注释你的JSPE序时是很有用的?/p>
JSP~译器不是会(x)?lt;%--and--%>之间的语句进行编译的Q它不会(x)昄在客L(fng)览器中Q也不会(x)在源代码中看到在<%-- --%>之间Q你可以L写注释语句,但是不能使用 "--%>",如果你非要用请?--%\>".
在JSPE序中声明合法的变量和方?
JSP 语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
声明你将要在JSPE序中用到的变量和方法。你也必这样做Q不然会(x)出错.
你可以一ơ性声明多个变量和Ҏ(gu)Q只要以";"l尾pQ当然这些声明在Java中要是合法的?
当你声明Ҏ(gu)或变量时Q请注意以下的一些规?
声明必须?;"l尾(Scriptlet有同L(fng)规则Q但?表达式就不同?.
你可以直接用在<% @ page %>中被包含q来的已l声明的变量和方法,不需要对它们重新q行声明.
一个声明仅在一个页面中有效。如果你x(chng)个页面都用到一些声明,最好把它们写成一个单独的文gQ然后用<%@ include %>?lt;jsp:include >元素包含q来?/p>
包含一个符合JSP语法的表辑ּ
JSP 语法
<%= expression %>
例子
<font color="blue"><%= map.size() %></font>
<b><%= numguess.getHint() %></b>.
描述
表达式元素表C的是一个在脚本语言中被定义的表辑ּQ在q行后被自动转化为字W串Q然后插入到q个表达C在JSP文g的位|显C。因个表辑ּ的值已l被转化为字W串Q所以你能在一行文本中插入q个表达式(形式和ASP完全一?.
当你在JSP中用表辑ּ时请C以下几点Q?
你不能用一个分P"Q?Q来作ؓ(f)表达式的l束W?但是同样的表辑ּ用在scriptlet中就需要以分号来结了(jin)Q查看Scriptlet q个表达式元素能够包括Q何在Java Language Specification中有效的表达?
有时候表辑ּ也能做ؓ(f)其它JSP元素的属性?一个表辑ּ能够变得很复杂,它可能由一个或多个表达式组成,q些表达式的序是从左到叟?/p>
包含一个有效的E序D?
JSP 语法
<% code fragment %>
例子
<%
String name = null;
if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
foo.setName(request.getParameter("name"));
if (foo.getName().equalsIgnoreCase("integra"))
name = "acura";
if (name.equalsIgnoreCase( "acura" )) {
%>
描述
一个scriptlet能够包含多个jsp语句Q方法,变量Q表辑ּ
因ؓ(f)scriptlet,我们便能做以下的?
声明要用到的变量或Ҏ(gu)Q参?声明).
~写JSP表达式(参?表达?.
使用M隐含的对象和M?lt;jsp:useBean>声明q的对象
~写JSP语句 (如果你在使用Java语言Q这些语句必遵从Java Language Specification,).
M文本QHTML标记QJSP元素必须在scriptlet之外
当JSP收到客户的请求时Qscriptlet׃(x)被执行,如果scriptlet有显C的内容Q这些显C的内容p存在out对象中?/p>
定义JSP文g中的全局属?
JSP 语法
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
例子
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
描述
<%@ page %>指o(h)作用于整个JSP面Q同样包括静(rn)态的包含文g。但?lt;% @ page %>指o(h)不能作用于动态的包含文gQ比?<jsp:include>
你可以在一个页面中用上多个<% @ page %>指o(h)Q但是其中的属性只能用一ơ,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不?参照Java Language)Q所以你p多用此属性几ơ了(jin).
无论你把<% @ page %>指o(h)攑֜JSP的文件的哪个地方Q它的作用范围都是整个JSP面。不q,Z(jin)JSPE序的可L,以及(qing)好的~程?fn)惯Q最好还是把它放在JSP文g的顶?
定义一个标{ֺ以及(qing)其自定义标签的前~.
JSP 语法
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
例子
<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>
<public:loop>
.
.
</public:loop>
描述
<% @ taglib %>指o(h)声明此JSP文g使用?jin)自定义的标{,同时引用标签库,也指定了(jin)他们的标{前缀?
q里自定义的标签含有标签和元素之分。因为JSP文g能够转化为XML,所以了(jin)解标{֒元素之间的联pd重要。标{֏不过是一个在意义上被抬高?sh)(jin)点的标讎ͼ是JSP元素的一部分。JSP元素是JSP语法的一部分Q和XML一h开始标记和l束标记。元素也可以包含其它的文本,标记Q元素。比如,一个jsp:plugin元素?lt;jsp:plugin>开始标记和</jsp:plugin>l束标记Q同样也可以?lt;jsp:params>?lt;jsp:fallback>元素.
你必d使用自定义标{之前?lt;% @ taglib %>指o(h)Q而且你可以在一个页面中多次使用Q但是前~只能使用一?
属?/p>
uri="URIToTagLibrary"
Uniform Resource Identifier (URI)Ҏ(gu)标签的前~对自定义的标{进行唯一的命名,URI可以是以下的内容:
Uniform Resource Locator (URL), ?RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html
Uniform Resource Name (URN), ?RFC 2396定义
一个相Ҏ(gu)l对的\?
prefix="tagPrefix"
在自定义标签之前的前~Q比如,?lt;public:loop>中的publicQ如果这里不写publicQ那么这是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做ؓ(f)你的前缀
重定向一个HTML文gQJSP文gQ或者是一个程序段.
JSP语法
<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>
or
<jsp:forwardpage={"relativeURL"|"<%=expression%>"}>
<jsp:paramname="parameterName"
value="{parameterValue|<%=expression%>}"/>+
</jsp:forward>
例子<jsp:forwardpage="/servlet/login"/>
<jsp:forwardpage="/servlet/login">
<jsp:paramname="username"value="jsmith"/>
</jsp:forward>
描述
<jsp:forward>标签从一个JSP文g向另一个文件传递一个包含用戯求的request对象.<jsp:forward>标签以下的代码,不能执?
你能够向目标文g传送参数和|在这个例子中我们传递的参数名ؓ(f)username,gؓ(f)scott,如果你用了(jin)<jsp:param>标签的话Q目标文件必L一个动态的文gQ能够处理参?
如果你用了(jin)非缓冲输出的话,那么使用<jsp:forward>时就要小?j)。如果在你?lt;jsp:forward>之前Qjsp文g已经有了(jin)数据Q那么文件执行就?x)出?
属?
page="{relativeURL|<%=expression%>}"
q里是一个表辑ּ或是一个字W串用于说明你将要定向的文g或URL.q个文g可以是JSP,E序D,或者其它能够处理request对象的文?如asp,cgi,php).
<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>+
向一个动态文件发送一个或多个参数Q这个文件一定是动态文?
如果你想传递多个参敎ͼ你可以在一个JSP文g中用多?lt;jsp:param>。name指定参数名,value指定参数?
获取Bean的属性|用于昄在页面中
JSP 语法
<jsp:getProperty name="beanInstanceName" property="propertyName" />
例子
<jsp:useBean id="calendar" scope="page" class="employee.Calendar" />
<h2>
Calendar of <jsp:getProperty name="calendar" property="username" />
</h2>
描述
q个<jsp:getProperty>元素获得Bean的属性|q可以将其用或昄在JSP面?在你使用<jsp:getProperty>之前Q你必须?lt;jsp:useBean>创徏?
<jsp:getProperty>元素有一些限?
你不能?lt;jsp:getProperty>来检索一个已l被索引?jin)的属?
你能够和JavaBeanslg一起?lt;jsp:getProperty>,但是不能与Enterprise
Bean一起用?
属?/p>
name="beanInstanceName"
bean的名??lt;jsp:useBean>指定
property="propertyName"
所指定的Bean的属性名?
技?
在sun的JSP参考中提到Q如果你使用<jsp:getProperty>来检索的值是I|那么NullPointerException会(x)出现Q同时如果用程序段或表辑ּ来检索其|那么在浏览器上出现的是nullQ空).
包含一个静(rn)态或动态文?
JSP 语法
<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />
or
<jsp:include page="{relativeURL | <%= expression %>}"flush="true" >
<jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" />+
</jsp:include>
Examples
<jsp:include page="scripts/login.jsp" />
<jsp:include page="copyright.html" />
<jsp:include page="/index.html" />
<jsp:include page="scripts/login.jsp">
<jsp:param name="username" value="jsmith" />
</jsp:include>
描述
<jsp:include>元素允许你包含动态文件和?rn)态,q两U包含文件的l果是不同的。如果文件仅是静(rn)态文Ӟ那么q种包含仅仅是把包含文g的内容加到jsp文g中去Q而如果这个文件动态的Q那么这个被包含文g也会(x)被Jsp~译器执?q一切与asp怼)
你不能从文g名上判断一个文件是动态的q是?rn)态的Q比如aspcn.asp
有可能只是包含一些信息而已Q而不需要执行?lt;jsp:include>能够同时处理q两U文Ӟ因此你就不需要包含时q要判断此文件是动态的q是?rn)态的.
如果q个包含文g是动态的Q那么你q可以用<jsp:param>q(sh)递参数名和参数倹{?
属?br />
page="{relativeURL | <%= expression %>}"
参数Z相对路径Q或者是代表相对路径的表辑ּ.
flush="true"
q里你必M用flush="true",你不能用false?~省gؓ(f)false
<jsp:param name="parameterName" value="{parameterValue | <%= expression %> }" />+
<jsp:param>子句能让你传递一个或多个参数l动态文?
你能在一个页面中使用多个<jsp:param>来传递多个参数?/p>
执行一个applet或Bean,有可能的话还要下载一个Java插g用于执行?
JSP 语法
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
例子
<jsp:plugin type=applet code="Molecule.class" codebase="/html">
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol" />
</jsp:params>
<jsp:fallback>
<p>Unable to load applet</p>
</jsp:fallback>
</jsp:plugin>
描述
<jsp:plugin>元素用于在浏览器中播放或昄一个对象(典型的就是applet和Bean),而这U显C需要在览器的java插g?
当Jsp文g被编译,送往览器时Q?lt;jsp:plugin>元素会(x)Ҏ(gu)?hu)览器的版本替换?lt;object>或?lt;embed>元素。注意,<object>用于HTML 4.0 Q?lt;embed>用于HTML 3.2.
一般来_(d)<jsp:plugin>元素?x)指定对象是Appletq是Bean,同样也会(x)指定class的名字,q有位置Q另外还?sh)(x)指定将从哪里下载这个Java插g。具体如?
属?/p>
type="bean | applet"
.被执行的插件对象的cdQ你必须得指定这个是Beanq是applet,因ؓ(f)q个属性没有缺省?
code="classFileName"
会(x)被Java插g执行的Java Class的名字,必须?classl尾。这个文件必d在于codebase属性指定的目录?
codebase="classFileDirectoryName"
会(x)被执行的Java Class文g的目录(或者是路径)Q如果你没有提供此属性,那么使用<jsp:plugin>的jsp文g的目录将?x)被使?
name="instanceName"
q个Bean或applet实例的名字,它将?x)在Jsp其它的地方调?
archive="URIToArchive, ..."
一些由逗号分开的\径名Q这些\径名用于预装一些将要用的class,q会(x)提高applet的性能.
align="bottom | top | middle | left | right"
囑ŞQ对象,Applet的位|?有以下?
(tng)
bottom
topmiddleleftrightheight="displayPixels" width="displayPixels"
Applet或Bean要昄的长宽的|此gؓ(f)数字Q单位ؓ(f)象素.
hspace="leftRightPixels" vspace="topBottomPixels"
Applet或Bean昄时在屏幕左右Q上下所需留下的空_(d)单位?
jreversion="JREVersionNumber | 1.1"
Applet或Beanq行所需的Java Runtime Environment (JRE) 的版?
~省值是 1.1.
nspluginurl="URLToPlugin"
Netscape Navigator用户能够使用的JRE的下载地址Q此gؓ(f)一个标准的URLQ如http://www.aspcn.com/jsp
iepluginurl="URLToPlugin"
IE用户能够使用的JRE的下载地址Q此gؓ(f)一个标准的URLQ如http://www.aspcn.com/jsp
<jsp:params>[ <jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>
你需要向applet或Bean传送的参数或参数倹{?
<jsp:fallback> text message for user </jsp:fallback>
一D|字用于Java
插g不能启动时显C给用户的,如果插g能够启动而applet或Bean不能Q那么浏览器?x)有一个出错信息弹?
创徏一个Bean实例q指定它的名字和作用范围.
JSP 语法
<jsp:useBean
id="beanInstanceName"
scope="page | request | session | application"
{
class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{
/> |
> other elements </jsp:useBean>
}
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
创徏一个Bean实例q指定它的名字和作用范围.
JSP 语法
<jsp:useBean
id="beanInstanceName"
scope="page | request | session | application"
{
class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{
/> |
> other elements </jsp:useBean>
}
(tng)
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
描述
<jsp:useBean>用于定位或示例一个JavaBeanslg?lt;jsp:useBean>首先?x)试囑֮位一个Bean实例Q如果这个Bean不存在,那么<jsp:useBean>׃(x)从一个class或模版中q行CZ?
Z(jin)定位或示例一个BeanQ?lt;jsp:useBean>?x)进行以下步聚,序如?
(tng)
通过l定名字和范围试囑֮位一个Bean.
对这个Bean对象引用变量以你指定的名字命?
如果发现?jin)这个Bean,会(x)在这个变量中储存q个引用。如果你也指定了(jin)cdQ那么这个Bean也设|ؓ(f)相应的类?
如果没有发现q个Bean,会(x)从你指定的class中示例,q将此引用储存到一个新的变量中厅R如果这个class的名字代表的是一个模版,那么q个Bean被java.beans.Beans.instantiateCZ.
如果<jsp:useBean>已经CZQ不是定位)(j)?jin)Bean,同时<jsp:useBean>?lt;/jsp:useBean>中有元素Q那么将?x)执行其中的代?
<jsp:useBean>元素的主体通常包含?lt;jsp:setProperty>元素Q用于设|Bean的属性倹{正如上面第五步所说的Q?lt;jsp:useBean>的主体仅仅只有在<jsp:useBean>CZBean时才?x)被执行Q如果这个Bean已经存在Q?lt;jsp:useBean>能够定位它,那么M中的内容不?x)v作用
属性以?qing)用?/p>
id="beanInstanceName"
在你所定义的范围中认Bean的变量,你能在后面的E序中用此变量名来分L不同的Bean
q个变量名对大小写敏感,必须W合你所使用的脚本语a的规定,在Java
Programming Language中,q个规定在Java Language
规范已经写明。如果这个Bean已经在别?lt;jsp:useBean>中创建,那么q个id的值必M原来的那个idg?
scope="page | request | session | application"
Bean存在的范围以?qing)id变量名的有效范围。缺省值是page,以下是详l说明:(x)
(tng)
page - 你能在包?lt;jsp:useBean>元素的JSP文g以及(qing)此文件中的所有静(rn)态包含文件中使用Bean,直到面执行完毕向客L(fng)发回响应或{到另一个文件ؓ(f)止?
request - 你在M执行相同h的Jsp文g中用Bean,直到面执行完毕向客L(fng)发回响应或{到另一个文件ؓ(f)止。你能够使用Request对象讉KBean,比如request.getAttribute(beanInstanceName)
session - 从创建Bean开始,你就能在M使用相同session的Jsp文g中用Bean.q个Bean存在于整个Session生存周期内,M在分享此Session的Jsp文g都能使用同一Bean.注意在你创徏Bean的Jsp文g?lt;%
@ page %>指o(h)中必L定session=true
(tng)
application - 从创建Bean开始,你就能在M使用相同application的Jsp文g中用Bean.q个Bean存在于整个application生存周期内,M在分享此application的Jsp文g都能使用同一Bean.
class="package.class"
使用new关键字以?qing)class构造器从一个class中示例一个bean.q个class不能是抽象的Q必L一个公用的Q没有参数的构造器.q个package的名字区别大写?
type="package.class"
如果q个Bean已经在指定的范围中存在,那么写这个Bean一个新的数据库cd
。如果你没有使用class或beanName指定typeQBean不?x)被CZ.package和class的名字,区分大小?
beanName="{package.class | <%= expression %>}" type="package.class"
使用java.beans.Beans.instantiateҎ(gu)来从一个class或连l模版中CZ一个Bean,同时指定Bean的类型?
beanName可以是package和class也可以是表达?它的g(x)传给Beans.instantiate.tupe的值可以和Bean相同?
package ?class 名字区分大小?
内置对象是不需要声明,直接可以在JSP中用的对象QJSP有以下几U内|对象:(x)
request request表示HttpServletRequest对象。它包含?jin)有x(chng)览器h的信息,q且提供?jin)几个用于获取cookie, header, 和session数据的有用的Ҏ(gu)?
response response表示HttpServletResponse对象Qƈ提供?jin)几个用于设|送回 览器的响应的方法(如cookies,头信息等Q?
out out 对象是javax.jsp.JspWriter的一个实例,q提供了(jin)几个Ҏ(gu)使你能用于向览器回送输出结果?
pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各U范围的名字I间、servlet相关的对象的APIQƈ且包装了(jin)通用的servlet相关功能的方法?
session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信?
application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信?
config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数?
page page表示从该面产生的一个servlet实例?
Servlet API中的几个对象
JSP提供?jin)八个内部对象,而其中的五个内部对象对应于Servlet API中的七个对象Q这也就使得我们正常理解q熟l用Servlet中的q七个对象显得尤光要。这五个JSP的内部对象和Servlet API中的对象的对应关pLQ?br />
request对象对应于:(x)javax.servlet.http.HttpServletRequest和javax.servlet.ServletRequest
response对象对应于:(x)javax.servlet.http.HttpServletResponse和javax.servlet.ServletResponse
session对象对应于:(x)javax.servlet.http.HttpSession
application对象对应于:(x)javax.servlet.ServletContext
config对象对应于:(x)javax.servlet.ServletConfig
javax.servlet.http.HttpServletRequest
q是一个接口,在我们提到接口之前,q是让我们来复习(fn)一下Java中接口的一个初步的解释Q?br />
接口在语法上与类怼Q但是接口没有实例,使用接口Q只是指定类必须做什么而不是如何做?br />
HttpServletRequest接口用来处理一个对Servlet的HTTP格式的请求信息?br />
javax.servlet.ServletRequest
q也是一个接口,q个接口定义一个Servlet引擎产生的对象,通过q个对象QServlet可以获得客户端请求的数据。这个对象通过dh体的数据提供包括参数的名U、值和属性以?qing)输入流的所有数据。而javax.servlet.http.HttpServletRequest也只是该接口的一个扩展,也就是说Q该接口的所有方法也可以被javax.servlet.http.HttpServletRequest所使用?br />
javax.servlet.http.HttpServletResponse接口
该接口用来描qC个返回到客户端的HTTP回应?br />
javax.servlet.ServletResponse接口
该接口用来定义一个Servlet引擎产生的对象,通过q个对象QServlet对客L(fng)的请求作出响应。这个响应应该是一个MIME实体Q可能是一个HTMLc(din)图象数据或其他MIME的格式。javax.servlet.http.HttpServletResponse接口是该接口的扩展?br />
javax.servlet.http.HttpSession接口
该接口用来描qC个sessionQ至于什么是session我想在这里就没必要说?jin)吧?br />
javax.servlet.ServletContext接口
该接口用来定义了(jin)一个Servlet的环境对象。也可是认ؓ(f)q是多个客户端共享的信息Q它与session的区别在于应用范围的不同Qsession只对应于一个用戗?br />
javax.servlet.ServletConfig接口
该接口定义了(jin)一个对象,通过q个对象QServlet引擎配置一个Servlet。每一个ServletConfig对象对应着一个唯一的Servlet?br />
javax.servlet.http.Cookiec?br />
q个cLqC(jin)一个cookieQcookie的作用其实与session很类|只是cookie保存在客L(fng)Qsession保存在服务器端?/p>
1>E序使用UTF-8
2>~码q虑为UTF-8 (tng) (tng) (tng) (tng) (tng) (tng)//影响post提交
3>server.xml加URIEncoding="UTF-8" (tng)//影响get提交
4>jsp面?lt;%@ page pageEncoding="UTF-8"%>
5>htm面?lt;meta http-equiv="content-type" content="text/html; charset=UTF-8">
注意Qget提交不能直接在地址栏输入测试,要在面里{?
用到的配|:(x)
(tng)