`
zengshaotao
  • 浏览: 787580 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet详解

 
阅读更多

1、对Servlet的理解

    Servlet是一种Java类。
    Servlet能够完成与JSP相同的功能。能够接收用户的请求,能够调用功能类的方法,可以对用户进行响应。
    Servlet和JSP同属于Java EE中Web层组件。

2、如何编写一个Servlet

    假设:该Servlet的功能为显示欢迎信息。

    Java文件的编写过程:(1)声明包 (2)引入用到的其他的类 (3)类的编写
    对于类:(1)类头——修饰符 class关键字 类名 继承父类 实现接口
            (2)类体——成员变量 构造方法 对属性进行操作的方法 功能类方法
    对于成员变量:修饰符 类型 变量名(对象名)
    对于方法(不包括构造方法):修饰符 返回值类型 方法名 参数列表 异常列表 方法体
    对于方法体:变量的声明 各种运算 调用其他的方法 返回结果

    (1)声明包,假设包名为servlet

package servlet;

    (2)引入用到的类,javax.servlet.* javax.servlet.http.* java.io.*
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

    (3)类头的定义
    访问控制符:public
    类名:HelloServlet
    继承父类:javax.servlet.http.HttpServlet
    实现接口:没有要实现的接口

public class HelloServlet extends HttpServlet

    (4)方法的定义
    主要的方法:init方法(用于初始化) destroy方法(释放资源) doGet或者doPost(完成主要功能)
    通常主要实现doGet方法或者doPost方法,分别对应客户端的get请求和post请求。


public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
    // 设置编码方式
    response.setContentType("text/html;charset=gb2312");
    // 得到输出流对象
    PrintWriter out = response.getWriter();
    out.println("欢迎学习JSP!");
}

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

3、编译存放

   需要用到javax.servlet.*和javax.servlet.http.*,两个包的实现在tomcat下面的lib中,名字为servlet-api.jar。
   放在(编译后的Servlet):WEB-INF/classes
   配置path: 把C:\Program Files\Java\jdk1.6.0\bin添加到path中,但是不能破坏原有的路径。
   配置classpath:把C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;添加到classpath中。
   编译:在命令行方式下进入到classes目录,然后使用 javac -d . HelloServlet.java   -d表示生成包的路径,.表示在当前位置生成。

4、配置Servlet
   配置文件及位置:WEB-INF下面的web.xml。
   配置包括两个方面:Servlet的声明 以及 Servlet访问方式的声明
   Servlet的声明:
   <servlet>
      <servlet-name>hello</servlet-name>
      <servlet-class>servlet.HelloServlet</servlet-class>
   </servlet>
  
   其中,<servlet-name>表示这个servlet的名字,可以随便起。<servlet-class>是对应的Servlet类,应该包含包的信息。

   Servlet访问方式的声明:
   <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
   </servlet-mapping>
   其中,<servlet-name>和Servlet声明中的用法相同,并且应该与Servlet声明中的名字保持一致。<url-pattern>表示访问方式,决定了在客户端如何访问这个Servlet。

5、访问Servlet
   http://127.0.0.1:8080/bookstore/hello

6、用Servlet完成login_process.jsp的功能
    login_process.jsp主要功能,判断用户输入的用户名和口令是否合法,然后根据判断的结果选择界面对用户响应。
    对于JSP文件来说,优势在于显示信息,login_process.jsp中的代码都不是显示信息的,主要用于控制。在Java Web应用中存在大量的这种现象。是Java Web中的控制功能。主要使用Servlet完成控制。
    login_process.jsp的基本功能:获取用户的输入信息;进行判断;转向。
    如果使用Servlet完成,功能代码应该写在doGet或者doPost方法中。对应上面的3个功能分别实现如下:
    获取用户信息:用户信息存储在doGet或者doPost方法的第一个参数中,所以从参数中获取,获取的代码为
        String username = request.getParameter("username");
        String userpass = request.getParameter("userpass");
    判断:
        if( username.equals("zhangsan") && userpass.equals("zhangsan") )
    转向响应界面:
        第一种方式:response.sendRedirect("index.jsp");
        第二种方式:与<jsp:forward>功能相同
        RequestDispatcher rd = request.getRequestDispatcher("index.jsp");  // 参数是要转向的页面
        rd.forward(request,response); // 完成跳转

LoginProcessServlet.java代码如下:

package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class LoginProcessServlet extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        // 获取用户输入的信息
        String username = request.getParameter("username");
        String userpass = request.getParameter("userpass");

        if( username.equals("zhangsan") && userpass.equals("zhangsan") )
        {
           RequestDispatcher rd = request.getRequestDispatcher("success.jsp");  // 跳转到成功的页面
           rd.forward(request,response); // 完成跳转
        }else
        {
           RequestDispatcher rd = request.getRequestDispatcher("index1.jsp");  // 跳转到登录页面
           rd.forward(request,response); // 完成跳转
        }
  }

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

}

配置文件中添加如下代码:
   <servlet>
      <servlet-name>login_process</servlet-name>
      <servlet-class>servlet.LoginProcessServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>login_process</servlet-name>
      <url-pattern>/login_process</url-pattern>
   </servlet-mapping>

修改index1.jsp的代码(修改form所在行),修改前:
<form action="login_process.jsp" method="post">
修改后:
<form action="login_process" method="post">

分享到:
评论

相关推荐

    Servlet详解Servlet详解

    Servlet 详解 Servlet 是 Java 语言中的一种服务器小程序,它可以与运行于客户端的 Applet 进行交互,也可以直接与 HTML 页进行交互。Servlet 的功能包括: 1. 与客户端 Applet 进行交互 2. 直接与 HTML 页进行...

    Servlet详解.pdf

    ### Servlet详解 #### 1. Servlet工作原理 Servlet是一种服务器端的小程序,主要用来处理HTTP请求并返回HTTP响应。Servlet由Servlet容器(如Tomcat、Jetty等)管理其生命周期,这种容器通常作为Web服务器的一部分...

    Servlet详解与配置

    Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。

    Servlet详解与应用.pptx.pptx

    Servlet是Java Web开发中的核心组件,它是一种运行在服务器端的Java程序,专门用来处理客户端的请求并生成响应。Servlet的主要职责是实现客户端与服务器之间的数据交互,这在构建动态Web应用时至关重要。Servlet不仅...

    servlet详解

    Servlet是Java平台上的一个核心技术,用于开发动态Web应用程序。它是Java EE(企业版)的一部分,主要用于处理HTTP请求,提供服务器端的功能。本教程将深入讲解Servlet的基本概念、工作原理以及如何通过示例来实现一...

    struts1之ActionServlet详解_动力节点Java学院整理

    struts1之ActionServlet详解 struts1框架中的ActionServlet是Struts1架构的核心组件之一,负责处理用户请求、交互ActionForm、ActionMapping和Action等组件,以完成用户请求。下面将详细介绍ActionServlet的工作...

    用继承servlet接口的方式手动开发servlet

    ### 使用Servlet接口手动开发Servlet详解 #### 一、概述 本文档将详细介绍如何通过实现`Servlet`接口的方式,从零开始构建一个简单的Servlet程序。这个Servlet不仅会显示“Hello World”,还会显示当前的时间。这...

    jsp 编程之@WebServlet详解

    `@WebServlet` 是Java Servlet API 3.0引入的一个注解,它简化了Servlet的配置,使得开发者无需在web.xml文件中手动配置Servlet。本篇文章将深入解析`@WebServlet` 注解的使用方法和它提供的各种特性。 首先,`@Web...

    手动编译、部署servlet

    ### 手动编译与部署Servlet详解 #### 一、Servlet简介 Servlet是Java Web开发中的一个重要组成部分,它主要用于处理客户端请求并生成动态响应。Servlet技术由Servlet规范定义,Servlet容器(如Tomcat)负责执行...

    JAVA WEB 开发详解

    #### 二、Servlet详解 **Servlet**是Java EE的一个关键技术,它是运行在服务器端的小程序,主要用于处理客户端请求并生成响应。 - **Servlet生命周期:** - 初始化:通过`init()`方法完成; - 请求处理:通过`...

    Servlet 基础教程

    Servlet基础教程 http原理 request, response

    HttpServlet 的Servlet的详解

    ### HttpServlet 详解 #### 1. 绪言 本文档主要介绍了Java Servlet API 2.1版本的相关内容,特别关注于`HttpServlet`类及其在实际应用中的作用。`HttpServlet`是Java Servlet API中一个重要的类,它为HTTP协议提供...

    Spring 管理filter 和servlet

    ### Spring管理Filter与Servlet详解 在现代Web应用开发中,Spring框架因其强大的依赖注入和面向切面编程功能而被广泛采用。特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高...

    Servlet JSP深入详解 基于Tomcat的Web开发

    ### Servlet与JSP深入详解:基于Tomcat的Web开发 #### 一、Servlet技术概述 Servlet是一种用Java编写的服务器端应用程序接口(API),它扩展了Java Web开发的功能。Servlet可以响应HTTP请求,并且能够处理复杂的...

    入门级完整项目全程实录源码两套-Jsp&Servlet

    2. **Servlet详解**: Servlet是Java EE平台中用于处理HTTP请求的服务器端组件。它通过实现Servlet接口或HttpServlet抽象类来扩展其功能。Servlet生命周期包括加载、初始化、服务、销毁四个阶段,而doGet和doPost...

Global site tag (gtag.js) - Google Analytics