Servlet的介绍与使用

目录

一、servlet接口实现类

1.什么是servlet?

2、如何使用Servlet

二、servlet接口实现类开发步骤

三、servlet里的三大作用域。

四、Servlet主要类、接口:

五、HttpServletRequest、HttpServletResponse

六、使用实例

 1、创建setvlet实现类

2、重写doGet()方法和doPost()方法

3、在Tomcat中注册实现类(两种方式:注解 或者 web.xml)


一、servlet接口实现类

 

1.什么是servlet?

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

  Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

​ 通俗来讲servlet专门用来接收客户端的请求,专门接收客户端的请求数据,然后调用底层service处理数据并生成结果

浏览器http请求------》tomcat服务器-------》到达servlet-----》执行doget或者dopost方法----》返回数据

  • <1>客户端发送请求到服务器端
  • <2>服务器将请求信息发送至Servlet
  • <3>Servlet生成响应内容并将其传给服务器。
  • <4>服务器将响应返回给客户端。

 

2、如何使用Servlet

 

  •      servlet接口来自servlet规范下的一个接口,这个接口存在Http服务器提供jar包
  •     Tomcat服务器下lib文件有一个servlet-api.jar存放servlet接口(javax.servlet.servlet接口)
  •     Servlet规范中任务,http服务器能调用的动态资源文件必须是一个Servlet接口实现类            例:
    class Student{
        //不是动态资源文件,Tomcat无权调用
    }
    class Teacher implements Servlet{
        //合法动态资源文件,Tomcat有权力调用
    }

     

  •   Tomcat根据Servlet规范调用Servlet接口实现类规则:

 

1.Tomcat有权创建Servlet接口实现类实例对象

Servlet oneServlet=new OneServlet();

2.Tomcat根据实例对象调用service()方法处理当前请求,在service()方法中会判断请求的是get请求还是post请求,从而调用相应的方法

String method = req.getMethod();
long lastModified;
if (method.equals("GET"))
 {
 }
 else if(method.equals("POST")){
       
    }

 

因为浏览器在向服务器发送请求的时候,会连同请求方式一并发送给服务器

因此服务器可以通过String method = req.getMethod();来获得它的请求方式

 

二、servlet接口实现类开发步骤

 

第一步:

创建一个Java类继承HttpServlet父类,使之成为一个Servlet接口实现类

第二步:

重写HttpServlet父类俩个方法,doGet或者doPost

浏览器-----》oneServlet.doGet()

浏览器-----》oneServlet.doPost()

第三步:

将servlet接口实现类信息【注册】到Tomcat服务器(两种方式)

第一种:web.xml注册

网站---->web---->WEB-INF ----->web.xml

<!-- 将servlet接口实现类类路径地址交给Tomcat-->
<servlet>
<servlet-name>mm</servlet-name><!--声明一个变量名储存servlet接口实现类类路径-->
<servlet-class>类的路径地址.具体的servlet实现类</servlet-class>
</servlet>

<!--为了降低用户访问 servlet接口实现类的难度,需要设置简短请求别名-->
<servlet-mapping>
<servlet-name> mm </servlet-name>   //确定为那个变量名储存下的servlet实现类起别名
<url-pattern> /one <url-pattern>
<!--设置简短请求别名,别名在书写时必须以”/“为开头-->
</servlet-mapping>

第二种:注解方式注册

@WebServlet(name="HelloServlet",urlPatterns = "/hello")
//name对应需要注册的类名,urlPattern对应类的路径地址
public class HelloServlet  extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("<h2 style='color:red'>helloWorld</h2>");
    }

}

 

三、servlet里的三大作用域。

 

  • request(请求):它的作用范围是一次请求和响应,是三个作用域中最小的。
  •  session(会话):它的作用比request要大一点,一次会话过程中,它的作用域就一直存在,(默认是30分钟)
  • .servletcontext:它作用范围最大,作用于整个服务器中。(Application)

 

四、Servlet主要类、接口:

 

    要编写一个Servlet需要继承HttpServlet类来实现servlet接口,该接口定义了5个方法

 

  • 1.init(),初始化servlet对象,完成一些初始化工作。它是由servlet容器控制的,该方法只能被调用一次。
  • 2.service(),接受客户端请求对象,执行业务操作,利用响应对象响应客户端请求。
  • 3.destroy(),当容器监测到一个servlet从服务中被移除时,容器调用该方法,释放资源。
  • 4.getServletConfig(),ServletConfig是容器向servlet传递参数的载体。
  • 5.getServletInfo(),获取servlet相关信息。
  • doGet()
  • doPost()

 

五、HttpServletRequest、HttpServletResponse

 

    由于HttpServletRequest和HttpServletResponse都是基于Http协议“升级改造”的,所以这两个对象较之ServletRequest和ServletResponse多出的方法主要和Http协议相关。

例如:Cookie、request(response)headers、Session、URL等。

 

六、使用实例

 

 1、创建setvlet实现类

package com.web;
public class LoginServlet extends HttpServlet {
  
}

 

2、重写doGet()方法和doPost()方法

protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
    String name = req.getParameter("name");
    String pwd = req.getParameter("pwd");
   try{

       UserDaoImpl userDao = new UserDaoImpl();
        userMap = userDao.userMap();
       User user = null;
       Set<Map.Entry<String,User>> set = userMap.entrySet();
       Iterator it = set.iterator();
       Boolean f=false;
       System.out.println(name+pwd);
       while (it.hasNext()) {
           Map.Entry entry = (Map.Entry) it.next();
           User u = (User) entry.getValue();
           System.out.println(u.getId()+u.getPassword());
           String key = (String) entry.getKey();
           if (name.trim().equals(key) &&pwd.trim().equals(u.getPassword())) {
               req.getRequestDispatcher("/ok.jsp").forward(req, resp);
               f=true;
               break;
           }

       }
       if(f==false){
           resp.sendRedirect("/login.jsp");
       }
   }catch (Exception e){
      e.printStackTrace();
   }

    }

@Override
public void destroy() {
    userMap.clear();
}

3、在Tomcat中注册实现类(两种方式:注解 或者 web.xml)

<servlet>
     <servlet-name> HelloServlet</servlet-name>
     <servlet-class>com.web.HelloServlet</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>HelloServlet</servlet-name>
     <url-pattern>/hello</url-pattern>
 </servlet-mapping>

 或者

@WebServlet(urlPatterns ="/login")
public class LoginServlet extends HttpServlet {
    
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿小许

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值