javaWeb编程_Servlet01

来源:互联网 发布:mac xcode 玩游戏 编辑:程序博客网 时间:2024/06/05 15:41

Servlet

一、servlet简介:

java Servlet 是运行在服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。

   web服务器端的编程技术。
是继承了javax.servlet.http.HttpServlet类的Java类。
由支持servlet的web服务器(tomcat)调用和启动运行。
一个servlet负责对应的一个或一组url的访问请求,并返回相应的响应内容

二、创建servlet步骤:

步骤一:编写servlet

(1)通常我们的servlet类需要继承于超类javax.servlet.http.HttpServlet子类继承使子类拥有了超类的功能,然后程序员只需要修改个别具体方法,

即覆盖Override超类的某些方法。可以覆盖的方法有:doGet()doPost()service(), init() ,destory()等等

注:

1、一旦我们的类写了service()方法,即它会覆盖超类HttpServletservice()方法,

因为service()可以应付getpost请求,那么我们即便定义了doGet()doPost()这两个方法也不会被调用

service()优于doGet()doPost()


2、超类HttpServletdoGet()doPost()的默认处理是返回一个405http状态码以及一个报错信息页面,

因此我们自己的doGet()doPost()不要去调用super.doGet()super.doPost(),否则浏览器将看到的是这个报错信息

页面。其实,超类返回的这个错误页的作用是为了提醒我们要定义自己的doGet()doPost()方法。因为如果我们自己没定

doGet()doPost(),系统就会选择超类的方法来调用而返回405报错页面。


2我们的servlet类还可以覆盖超类的init()destroy()方法,init()主要做一些初始化工作,destroy()主要做释放

资源等事情。

实例化:Servlet容器创建servlet实例。

init():默认情况下,第一次访问servlet的时候被调用(该servlet被初始化),只调用一次。

service():每次访问都会调用该方法。

destroy():销毁实例之前调用,比如服务器关闭的时候调用(该servlet被销毁).


步骤二:配置路由

    当用户提交来url请求,应用程序要决定用哪个java类来处理这个请求,即指定urljava类的对应关系。

这是通过在web.xml中用<servlet>元素和<servlet-mapping>元素完成的,如下示例

这个配置即是指当用户输入的url是“/login”时,系统就会使用名为“LoginServlet”的servlet类来响应,

而它对应的类全名是“com.yy.servlet.web.servlet.LoginServlet”,因此系统就会调用这个LoginServlet类的相应方法

去处理请求并输出响应内容。

步骤三:

在浏览器中输入对应的URL,即可访问。

常见的几个错误:

404:资源加载错误,这个情况很可能是路径的问题

500:服务器内部错误。

405们自己没定doGet()doPost(),系统就会选择超类的方法来调用而返回405报错页面。


三、Servlet的生命周期:

务器接收到http请求之后,会把请求信息封装成HttpServletRequest对象和HttpServletResponse对象。

当第一次访问servlet时,服务器会加载这个servlet类,创建对象,调用其init方法(初始化),然后调用服务

方法(如果是get请求,就调用doGet方法,如果是post请求,就调用doPost方法)。此后的每次对servlet的访问,

服务器都不再调用init方法而只调用服务方法。当要卸载Servlet时(如重新发布新代码到服务器),或要关闭服

务器时,就先调用destroy方法,其中一般主要做释放资源之类的事情。

四、servlet内置对象:

1、request:

表示HttpServletRequest对象,它包含了有关浏览器请求的信息,并且提供了几个用于获取

cookie, header,session数据的有用的方法。

request这个内置对象代表浏览器向服务端提交来的请求,封装了大量数据,是个大对象。

常用的几个重要方法:

1.String getParameter(String name)  根据页面表单组件名称获取页面提交数据

2.String[ ] getParameterValues(String name)获取一个页面表单组件对应多个值时的用户的请求数据

3.void setCharacterEncoding(String charset) 指定每个请求的编码,在调用getParameter( )之前进行设定,可以解决中文乱码问题

  4.String getRemoterAddr()  返回提交请求的客户机的IP地址

比如:

reqsetCharacterEncoding("UTF-8");
String username = new String(username.getBytes("ISO-8859-1"),"UTF-8"); 将字节用UTF-8码表 解码回中文 

2、response:

表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)

常用的几个方法:

1、response.setCharacterEncoding("UTF-8");//设置response编码

2、response.setContentType("text/html");//设置文本格式为html

3、response.sendRedirect("url");//设置页面重定向

3、out:

 out内置对象主要用于向客户端输出文本信息。

out对象有print() 方法和write()方法,但是print()支持的参数类型更丰富,因而常用它。

out内置对象是 javax.jsp.JspWriter类的对象,具有输出的方法。

response对象并没有诸如writer()方法,但它能通过getWriter()来得到一个java.io.PrintWriter对象后,使用这个对象进行输出。

今天暂时学习这些,jsp servlet的内容还有很多后面慢慢补充。。。











原创粉丝点击