Category 1996世界杯

目录

--------- Servlet学习笔记1------------

----------Servlet学习笔记2------------

----------Servlet学习笔记3------------

1.5 在Eclipse开发工具创建servlet两种方式:

(1)先创建一个普通的java类,需要去实现Servlet接口或者继承对应的HttpServlet(GEnericServlet)类,咱们普通的javaLei 就具有了servlet功能,所以需要手动在web.xml配置文件中添加访问servlet的路径信息。

(2)直接创建servlet,会自动在web.xml文件中添加访问servlet的路径信息。

步骤: (1)新建web项目,比如说创建一个web项目名称:chapter03

(2)创建一个servlet程序:比如说,先创建一个包,名称cn.itcast.servlet,servlet的名称:TestServlet01

(3)部署和访问servlet:通过开发工具部署web项目,如chapter03,访问它下面的servlet资源。访问的地址:http://localhost:8080/chapter03/testServlet01

注意:一般情况下,为了简化开发,咱们会在post方法里面调用doGet()方法。

具体见以下代码:

代码语言:javascript复制/*

* doGet()方法,用来接收浏览器发送的get请求

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

PrintWriter out=response.getWriter();

out.print("this servlet is created by eclipse");

}

/*

* doPost()方法,用来接收浏览器发送的post请求

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doGet(request,response);

}

需求:可以发送get请求和post请求得到1到100之间的和

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

int sum=0;

for(int i=0;i<=100;i++){

sum+=i;

}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

this.doGet(request,response);//简化开发

}1.6 实现Servlet的虚拟路径映射1.Servlet的多重映射:一个servlet,可以对应多个访问路径。

比如:

代码语言:javascript复制

TestServlet01

/testServlet01

TestServlet01

/test02

TestServlet01

/test03

2.servlet的映射路径可以使用通配符

servlet的映射路径有三种方式:

(1)完全目录匹配:比如/hello

(2)目录匹配:比如/abc/或者/

(3)扩展名匹配:比如*.do,.action 注意/.do这种写法是错误的

优先级:完全目录匹配>目录匹配>扩展名匹配

例如:servlet的路径:

/abc/* 对应的servlet01的访问路径

/* 对应servlet02

/abc 对应servlet03

*.do 对应servlet04

在浏览器输入的url地址如下:

/abc/a.html :访问/abc/* servlet路径匹配度更高, servlet01

/abc :访问servlet03

/abc/a.do :访问 servlet01

/a.do :访问servlet02

3.缺省Servlet

什么是缺省Servlet:它的映射路径"/",代表这是一个缺省的servlet.

缺省的servlet的作用:处理请求的资源找不到的问题(404 代表请求的起源找不到)

二、ServletConfig接口什么是ServletConfig:他是servlet的配置对象,作用就是获取与servlet相关的初始化参数。

它的子类是:GenericServlet和HttpServlet.

它被实例化通过web服务器实现的。

得到ServletConfig对象:getServletConfig()

ServletConfig常用的方法:

getInitParameter(String name)//获取初始化参数的值 :根据encoding获取utf-8

getInitParameterNames()//获取servlet初始化参数的名称:获取encoding和username的名称

getServletContext()//得到ServletContext对象

getServletName() //获取servlet的名称:对应web.xml里面TestServlet02

初始化参数的配置:

代码语言:javascript复制

encoding

utf-8

username

xiaozhang

三、ServletContext接口代码语言:javascript复制ServletContext对象实在web服务器启动时就创建了,是web服务器创建的ServletContext对象。

每一个web项目只有一个ServletContext对象。ServletContext对象的作用:

[1]获取web应用程序的初始化参数.(web应用程序就是web项目)

[2]在web应用程序能共享数据.

[3]获取web项目下的资源文件.

得到ServletContext对象:

(1)通过ServletConfig对象:config.getServletContext()

(2)直接得到:getServletContext();

1.获取web应用程序的初始化参数.(web应用程序就是web项目)

[1]获取全局初始化参数的值:getInitParameter(String name)

[2]获取全局初始化参数的名称:getInitParameterNames()

比如:

代码语言:javascript复制

AAA

aaa

BBB

bbb

2.实现多个servlet对象之间共享数据:因为一个web项目只有一个ServletContext对象

ServletContext对象就是域对象:域对象在一定范围内能存值和取值。

域对象相关的方法:

[1]存值:setAttribute(String name,Object obj);

[2]取值:Object obj=getAttribute(String name);

[3]删除值:void removeAttribute(String name);

比如: 在TestServlet05里面存值

代码语言:javascript复制 //[1].得到ServletContext对象

ServletContext context=this.getServletContext();

//[2].存值

context.setAttribute("key", "servlet05里面存的值");在TestServlet06里面获取值

代码语言:javascript复制 //[1].得到ServletContext对象

ServletContext context=this.getServletContext();

//[2].从ServletContext取值

Object obj=context.getAttribute("key");

String value=obj.toString();

response.setContentType("text/html;charset=utf-8");

response.getWriter().print(value);3.获取web下面的资源文件

通过ServletContext对象能够获取web项目下面文件的字节输入流或者文件的

绝对路径

路径问题:

[1]普通java项目:直接使用jdk编译java文件,所以说文件的路径是相对与工作

空间.

比如:

代码语言:javascript复制 Properties por=new Properties();

InputStream instream=new FileInputStream("src/config.properties");

por.load(instream);

String value=por.getProperty("key");

System.out.println(value);[2]web项目:运行在tomcat服务器上面的,所有文件的路径是相对于tomcat

服务器。

服务器端是没有src这个目录,在写路径时不能写src,必须相对于tomcat

服务器端的路径。

(1)获取文件的字节输入流:路径是相对于tomcat服务器的路径

InputStream in=getResourseAsStream(String path)

比如:

代码语言:javascript复制 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//[1]获取文件的字节输入流

ServletContext context=this.getServletContext();

//写相对于tomcat服务器的路径,不要用绝对路径

String path="/WEB-INF/classes/config.properties";

InputStream in=context.getResourceAsStream(path);

Properties pro=new Properties();

pro.load(in);

//获取配置文件的值

String v1=pro.getProperty("Company");

String v2=pro.getProperty("Address");

response.getWriter().print("company name:"+v1+"company address:"+v2);

}(2)获取文件的绝对路径:路径是相对于服务器端的路径

String realPath=getRealPath(path)

比如:

代码语言:javascript复制 //[1]得到ServletContext对象

ServletContext context=this.getServletContext();

//[2]获取文件的绝对路径

String path="/WEB-INF/classes/config.properties";

//[3]调用getRealPath,获取绝对路径

String realPath=context.getRealPath(path);

System.out.println(realPath);

InputStream in=new FileInputStream(realPath);

Properties pro=new Properties();

pro.load(in);

//获取配置文件的值

String v1=pro.getProperty("Company");

String v2=pro.getProperty("Address");

response.getWriter().print("company name:"+v1+"company address:"+v2);

top
Copyright © 2088 足球世界杯预选赛_荷兰世界杯 - twllb.com All Rights Reserved.
友情链接