`
kuyuyingzi
  • 浏览: 53024 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

进入黑马day4-Serlet与Tomcat

 
阅读更多

Servlet运行过程:

1、配置Preferences/MyEclipseEnterpriseWorkbench/Servers/Tomcat

/Tomcat6.x,注意勾选Enable

2、deployMyEclipseJ2eeprojecttoService

3、StartTomcat6.x

4、在网页中输入http://localhost/项目名/url-pattern(web.xml配置的引用名)

如:http://localhost/day4/servlet/Demo1

Web.xml配置

1、参数

<context-param>

<param-name>data0</param-name>

<param-value>aaaaaaa</param-value>

</context-param>

<servlet>

2、初始化参数

<init-param>

<param-name>data1</param-name>

<param-value>累啊</param-value>

</init-param>

<init-param>

<param-name>data2</param-name>

<param-value>好累啊</param-value>

</init-param>

<init-param>

<param-name>data3</param-name>

<param-value>非常累啊</param-value>

</init-param>

<load-on-startup>1</load-on-startup>//设置服务器启动时该Servlet第几个加载

</servlet>

Demo1.java

在doGet方法中加入代码

1、关于ServletConfig

ServletConfigconfig=this.getServletConfig();

Stringdata0=config.getInitParameter("data0");

System.out.println(data0);

Enumerationen=config.getInitParameterNames();

while(en.hasMoreElements()){

Stringstr=(String)en.nextElement();

System.out.println(str+config.getInitParameter(str));

}

运行Servlet后,控制台输出

null

data2好累啊

data3非常累啊

data1累啊

说明config不能获取<servlet>外面的参数

2、关于ServletContext

ServletContextcontext=this.getServletContext();

Stringdata0=context.getInitParameter("data0");

System.out.println(data0);

Stringdata1=(String)context.getAttribute("data1");

System.out.println(data1);

运行Servlet后,控制台输出

aaaaaaa

Null

说明ServletContext可以用获取<context-param>中的值而不能获取<init-param>的值

所以获取<init-param>的值用ServletConfig,获取<context-param>ServletContext

关于response响应

response.getOutputStream().write("怎么回事呢".getBytes());

返回响应到浏览器

关于Request请求转移

Dispatcherpathcher=request.getRequestDispatcher("/12.html");

pathcher.forward(request,response);

<servlet-mapping>虚拟路径可以配置多个

例如:

<servlet-mapping>

<servlet-name>Demo1</servlet-name>

<url-pattern>/servlet/Demo1</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>Demo1</servlet-name>

<url-pattern>/aaa</url-pattern>

</servlet-mapping>

则可以通过http://localhost/day4/aaa访问

如果<servlet-mapping>虚拟路径同时配置如下的一些映射关系:

Servlet1映射到/abc/*

Servlet2映射到/*

Servlet3映射到/abc

Servlet4映射到*.do

问题:

当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1

当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应

Servlet引擎将调用Servlet3

当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet1

当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet2

当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应

Servlet引擎将调用Servlet2

//利用ServletContext读取资源文件

ServletContextcontext=this.getServletContext();

//该路径相对于Tomcat中web应用day4文件夹的路径

InputStreamin=context.getResourceAsStream("/1.properties");

Propertiesp=newProperties();

p.load(in);

System.out.println(p.getProperty("username"));

//利用TomCat加载web应用classes中类的加载器获取资源文件

1、利用类加载器获取路径,再用FileInputStream加载,这样就可以避免出现类加载器已有缓存中的资源文件

ClassLoaderloader=this.getClass().getClassLoader();

//该路径相对于WEB_INF/classes

URLurlPath=loader.getResource("../../1.properties");

Stringpath=urlPath.getPath();

FileInputStreamin=newFileInputStream(path);

2、直接用类加载器加载资源文件,该方法不能实时更新资源文件

ClassLoaderloader=this.getClass().getClassLoader();

InputStreamin

= loader.getResourceAsStream("../../1.properties");

Propertiesp=newProperties();

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics