servlet的简单使用

来源:互联网 发布:强制删除用户 linux 编辑:程序博客网 时间:2024/06/15 15:51

介绍:

servlet是一个小应用程序

作用: 处理从客户端发送的请求及服务端的响应。

开发步骤:Servlet是sun公司提供的一门⽤用于开发动态web资源的技术。

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了⼀些与HTTP协议处理⽅方法,它比Servlet接口的功能更为强大。因此开发⼈人员在编写Servlet时,通常应继承这个类,⽽避免直接去实现Servlet接口。

HttpServlet在实现Servlet接⼝时,覆写了service⽅方法,该⽅法体内的代码会⾃动判断用户的请求方式,如为GET请求,则调⽤HttpServlet的doGet⽅方法,如为Post请求,则调⽤doPost⽅方法。 因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,⽽不要去覆写service方法。

 

三种创建方式:

1、实现接口

public classTestServlet implements Servlet {

 

         @Override

         publicvoid destroy() {

 

         }

 

         @Override

         publicServletConfig getServletConfig() {

                  returnnull;

         }

 

         @Override

         publicString getServletInfo() {

                  returnnull;

         }

 

         @Override

         publicvoid init(ServletConfig arg0) throws ServletException {

 

         }

 

         @Override

         publicvoid service(ServletRequest request, ServletResponse response)

throws ServletException, IOException {

 

         }

}

 

2、继承HttpServlet

亲求方式:

protected voiddoGet(HttpServletRequest request, HttpServletResponse response)

protected voiddoPost(HttpServletRequest request, HttpServletResponse response)

方法参数说明:

request.getParameter("name");//根据key值获取参数

 

     request.getServerName();//获得服务器名字

     request.getProtocol();//获得协议

     request.getServerPort();//获取服务端口号

     request.getCharacterEncoding();//获取字符编码格式

     request.getMethod();//获取的请求方式

     request.getReader();//获得BufferReader对象

     request.getInputStream();//获得输入流

     request.getRemoteAddr();//客户端ip地址

     request.getRemoteHost();//客户端主机名

     request.getRemotePort();//客户端端口号

     request.getRemoteUser();//客户端用户

 

response.getOutputStream()//获取字节输出流对象,利用该对象可将数据以字节方式写出

response.getWriter();//获取字符写出流对象,利用该对象可将数据以字符流的方式写出

response.setCharacterEncoding("utf-8");//设置响应编码格式,如果以字符流响应必须设置,防止乱码

 

 

字符流比字节流快。

os.write()//将数据写出

os.flush();//写出数据一定要刷一下

os.close();//流一定要关闭

 

 

 

3、继承GenericServlet

public classThirdServlet extends GenericServlet {

 

         privatestatic final long serialVersionUID = 1L;

 

         @Override

         publicvoid service(ServletRequest request, ServletResponse response)

                          throwsServletException, IOException {

 

         }

}

4、配置servlet

<servlet>

   <servlet-name>MyServlet</servlet-name>

   <servlet-class>cn.banwxf.MyServlet.MyServlet</servlet-class>

 </servlet>

 <servlet-mapping>

   <servlet-name>MyServlet</servlet-name>

   <url-pattern>/myservlet</url-pattern>

 </servlet-mapping>

servlet-class:按住ctrl如果变成连接说明该类路径真确

url-pattern:不能使用大写,是访问的地址

例:http://192.168.56.2:8080/MyProject/myservlet

Servlet的生命周期


public void init(ServletConfig) ; 初始化方法

publicservice(ServletRequest,ServletResponse) ; 服务方法

public destroy() ;  销毁方法

默认情况下,servlet对象在第一次请求的时候调用构造函数创建, 创建之后自动调用带参的init方法,然后调用service方法.destroy方法在停止服务器或者停止应用的时候调用。整个过程中,init方法和destroy方法只会调用一次,而service方法会反复调用。

0 0