application对象

application对象主要作用就是保存公共信息。所属接口:javax.servlet. ServletContext 。

重要方法:

  属性操作的三个方法:
   setAttribute()、 getAttribute() 、removeAttribute()

工作目录的路径不是固定的,得到工作目录的路径的方法:
String  getRealPath(String path) 参数“/”
 确定可以通过此方法找到工作目录,为什么能够找到?
application是在整个服务器端保持的只有一个实例的对象,所有用户都可以访问到。
在实际应用中,往往使用getServletContext()方法代替application。
<%=getServletContext().getRealPath("/")%>


为什么此方法没有使用对象调用?
所有的WEB处理程序,有一个WEB容器的支持,实际上此方法是由容器进行调用:this.getServletContext()

JSP安全性和config对象的应用:
在javaEE中安全性体现之一就是:WEB-INF目录。
如果能够将一个页面保存在WEB-INF目录下,安全性提高,但是页面无法找到。
解决一个问题:是页面能够被用户所访问
解决方法:在WEB-INF目录建立web.xml文件
web.xml文件:属于整个Web站点的配置文件。

config对象一般用来取得服务端的初始化配置参数,但若要使用此对象应在WEB-INF/web.xml之中配置
<servlet>
在web.xml文件内部起作用,与servlet-mapping关联
<servlet-name>mldn</servlet-name>
找到jsp的路径,此路径一般保存在WEB-INF之中
<jsp-file>/WEB-INF/sdemo.jsp</jsp-file>
</servlet>
<servlet-mapping>
在web.xml文件内部起作用,与<servlet>中的<servlet-name>完全一致
<servlet-name>mldn</servlet-name>
地址栏上实际输入的路径地址
<url-pattern>/zst</url-pattern>
</servlet-mapping>
配置完成之后,可以重新启动服务器。
通过http://127.0.0.1:8080/mac/zst可以找到sdemo.jsp文件。
<init-param>
 <param-name>uname</param-name>
 <param-value>mldn</param-value>
</init-param>
<init-param>
 <param-name>upass</param-name>
 <param-value>LiXingHua</param-value>
</init-param>
如果要去的这些初始化参数,必须通过映射名称进行访问JSP页面,也可以取得初始化参数,就通过config
对象取得。
所属接口:javax.servlet.ServletConfig
取得xml配置的参数值的方法:String  getInitParameter(String name)
此种功能,可以将数据库连接的一些信息写到配置文件中--JDBC程序应用。


默认首页的设置?
Tomcat服务端 ->默认首页名称是:index.html、index.htm、index.jsp
如何修改:希望以下页面作为首页:default.html、default.htm、default.jsp,修改WEB-INF/web.xml文件
<welcome-file-list>
       <welcome-file>default.html</welcome-file>
       <welcome-file>default.htm</welcome-file>
       <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

2.4.1  ServletConfig和Servlet初始化参数

从Java EE的API查看ServletConfig类,发现它有一个getServletName方法,以及几个与初始化参数(Initialization Parameter)有关的方法。从名字上看,getServletName返回Servlet的名字,初始化参数和ServletName都在配置文件 中定义,打开本节代码的配置文件,下面是与本小节有关的部分:

<servlet>
<servlet-name>servletconfigcontext</servlet-name>
<servlet-class>
servletconfigcontext.ServletConfigContext
</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>testuser</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>test</param-value>
</init-param>
</servlet>

<init-param>中的内容就是初始化参数,初始化参数的设置在Servlet的设置中,因此该初始化参数属于这个Servlet。

所谓ServletName(Servlet)的名字,就是<servlet-name>中的内容,因此,ServletName不是Servlet的类名。

在ServletConfigContext的init方法中,下面的代码用于输出ServletName和所有的初始化参数:

System.out.println("---Test methods from Servlet Config---");
System.out.println("config.getServletName= " + config.getServletName());
try {
System.out.println("Config InitParameters:");
Enumeration initParaNames = config.getInitParameterNames();
while (initParaNames.hasMoreElements()) {
String name = (String) initParaNames.nextElement();
System.out.println(name + " = " + config.getInitParameter(name));
}
}

上述代码在服务器窗口中的输出如下:

---Test methods from Servlet Config---
config.getServletName= servletconfigcontext
Config InitParameters:
password = test
username = testuser

猜你喜欢

转载自zengshaotao.iteye.com/blog/1911678
今日推荐