Servlet学习

1        Servlet

1.1        基本概念

Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的,一般情况下,人们将Servlet理解为后者。

 

过程:

客户端发送请求至服务器

服务器启动并调用ServletServlet根据客户端请求生成响应内容并将其传给服务器

服务器将响应返回客户端

 

1.2        生命周期

加载 ->2.初始化 - > 3.调用 - >4.销毁

 

1.3        重要函数

Javax.servlet软件包中相关类为ServletResponseServletRequest

Javax.servlet.httpHttpServletResponseHttpServletRequest

1.3.1       init()方法

Servlet的生命周期中,仅执行一次init()方法

1.3.2       Service()方法

包含两个参数:

HttpServletRequest,包含了客户端请求的信息,可以通过该参数取得客户端的一些信息(IP、浏览器类型等)HTTP请求类型(GETHEADPOSTPUT)

HttpServletResponse,通过调用HttpServletResponse.getOutputStream()客户取得客户端进行输出的输出流,向客户端发送HTML页面

    当需要修改服务器端的数据时,应该使用doPost()方法

    当不需要修改服务器端的数据时,应该使用doGet()方法

1.3.3       Destroy()方法

GetServletConfig()

GetServletInfo()

 

 

1.4        Selvlet配置

Web.xml

    <servlet>

        <servlet-name>UserServlet</servlet-name>

        <servlet-class>com.demo.servlet.UserServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>UserServlet</servlet-name>

        <url-pattern>/UserServlet.do</url-pattern>

    </servlet-mapping>

 

1.5        Servlet经典实例

1.5.1       编码过滤器

Web.xml添加过滤

    <filter>

       <filter-name>EncodingFilter</filter-name>

       <filter-class>com.utils.EncodingFilter</filter-class>

       <init-param>

           <param-name>encoding</param-name>

           <param-value>gb2312</param-value>

       </init-param>

    </filter>

    <filter-mapping>

       <filter-name>EncodingFilter</filter-name>

       <url-pattern>/login.jsp</url-pattern>

    </filter-mapping>

 

输入参数为encoding,设置为gb2312。匹配的URLo /*,表示匹配所有请求

EncodingFilter.java

package com.utils;

 

import javax.servlet.*;

import javax.servlet.http.*;

 

public class EncodingFilter extends HttpServlet implements Filter{

    private FilterConfig config=null;

    private String encoding="";

    public void init(FilterConfig config)throws ServletException{

        this.config=config;

        this.encoding=config.getInitParameter("encoding");

       

    }

   

    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

    throws java.io.IOException,ServletException {

        HttpServletRequest req=(HttpServletRequest)request;

       HttpServletResponse res=(HttpServletResponse)response;

       response.setCharacterEncoding(this.encoding);

       java.io.PrintWriter out=res.getWriter();

       out.print("过滤器设置编码为:"+this.encoding+"<br><br>");

       chain.doFilter(req, res);

    }

}

 

1.5.2       站点计数监听器

Web.xml添加监听

    <listener>

        <listener-class>com.utils.CounterListener</listener-class>

    </listener>

 

CountListener.java

package com.utils;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class CounterListener implements HttpSessionListener {

    public static int count;

    public CounterListener(){

       count=0;

    }

    //创建一个session时激发

    public void sessionCreated(HttpSessionEvent arg0) {

       count++;

    }

    //一个session失效时激发

    public void sessionDestroyed(HttpSessionEvent arg0) {

       if(count>0)count--;

    }

}

 

在页面中增加以下代码

当前在线用户:<%=CounterListener.count %>

 

Servlet调用

Web.xml中配置

    <listener>

        <listener-class>com.utils.CounterListener</listener-class>

    </listener>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值