Servlet技术简介以及简单实践

1.Servlet产生背景

服务器在处理客户端请求报文的时候,需要对静态网页进行一定的业务逻辑,然后将业务逻辑运算之后的结果和需要显示的HTML一起生成新的HTML代码,然后将新的带有业务逻辑的运算结果的HTML代码返回给客户端。简单来说就是随着业务的深化,静态页面已经逐渐转化到动态页面,为了更好满足业务需要,就进化出了Servlet技术

2.Servlet运行过程

这里写图片描述

⒈ 客户端发送请求至服务器端;
⒉服务器端根据配置文件web.xml中的Servlet相关服务信息,将客户端请求转发到对应的Servlet
⒊ Servlet引擎调用Service()方法,根据request对象中封装的用户请求与数据库进行交互,返回数据之后,Servlet会将返回的数据封装到response对象

1)第一次请求Servlet的的时候,Servlet容器将会创建Servlet实例;
2)Servlet容器加载完成Servlet之后,必须进行初始化,此时,init()方法将被调用;
3)Servlet初始化之后,就处于响应请求的就绪状态,此时如有客户端请求发送,就会调用Servlet实例的service()方法,并且根据用户的请求方式,调用doPost或者doGet方法;
4)最后,Servlet容器负责将Servlet实例进行销毁,调用destroy方法实现

⒋ Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求 
⒌ 服务器将响应返回给客户端

3.简单实例

首先创建一个简单的Web动态工程ServletTest,目标是实现客户端访问该Servlet,并收到响应,同时Servlet端记录该访问者IP:
Servlet端代码如下:

public class ServletTest extends HttpServlet {
    private static final long serialVersionUID = 1L;
     //构造函数
    public ServletTest() {

    }

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


        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
          try {
            out.println("没错,我就是返回!");;
        } finally {
            out.close();
        }
//得到来访者IP地址
        String ip=request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    
            ip = request.getHeader("Proxy-Client-IP");    
        }    
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    
            ip = request.getHeader("WL-Proxy-Client-IP");    
        }    
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {    
            ip = request.getRemoteAddr();    
        }    
        System.out.println("收到一个请求"+new Date()+"请求访问IP为:  "+ip);
}

编写代码完成之后,就需要去进行对该工程web.XML进行配置才能将编写好的Servlet进行发布:
首先,我们在webContent/WEB-INF下面找到web.xml;
其中 com.test.ServletTest为我们的包名。

<servlet>
    <servlet-name >ServletTest</servlet-name>
    <servlet-class> com.test.ServletTest</servlet-class >
  </servlet >
  <servlet-mapping >
    <servlet-name >ServletTest</servlet-name>
    <url-pattern >/ServletTest</url-pattern>
  </servlet-mapping >

然后我们对其邮件执行,Run on Server。
现在弹出页面选择新定义一个Server,名字任意取,然后将自己的工程Add到Configred中。finish。。。。

然后我们就会看到,访问到的页面。
将Eclipse中的Url放入到浏览器进行访问,我们进会看到对应的访问者的访问时间和IP地址。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值