`

编写简单的Servlet程序。

阅读更多
水平有限,如有技术问题,请提出,谢谢!!!



下面描写的是一段超级简单的doPost方法,可以使用HttpServletRequest对象里的request.getParameter()方法接收来自页面表单的数据。

比如:
request.getParameter("UserName");

这个方法表面接受页面表单名为UserName的数据。

页面:
<form method="post" action="/Film/servlet/UserRegister">
		用户名:<input type="text" name="UserName"><br>



package app.user.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import core.security.MD5;

import app.user.service.UserService;

public class UserRegisterAction extends HttpServlet {

	private UserService userService=new UserService();
	
	private String userName;
	private String passWord;

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	
		//JS弹出中文,解决乱码
		response.setCharacterEncoding("GB2312");
		
		userName=request.getParameter("UserName");
		passWord=request.getParameter("PassWord");
		PrintWriter out=response.getWriter();
		
		if(request.getParameter("PassWord2").equals(passWord)&&userName!=null&&userName.length()!=0){
			userService.saveUserInformationByRegister(userName,MD5.getMD5(passWord));
			out.print("<script language='javascript'>alert('注册成功!');window.location.href='/Film/index.jsp';</script>");
		}else{
			out.print("<script language='javascript'>alert('填写错误!请重新填写.');window.location.href='/Film/servlet/registerUser.jsp';</script>");
		}
		
	}

	
}


之后,我们需要在web.xml文件里配置这个servlet。

 <servlet>
	<servlet-name>UserRegister</servlet-name>
    <servlet-class>app.user.action.UserRegister</servlet-class>
  </servlet>

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



引用
这里的
<servlet-name> UserRegister </servlet-name>
使用servlet-name定义servlet的名称,名称可以随意,一般选取有意义的名称。
<servlet-class>app.user.action.UserRegister</servlet-class>
servlet用来定义由哪一个类来处理用户的请求。形式为:包名+类名

<servlet-mapping>
<servlet-name>UserRegister</servlet-name>
该名称与上面定义的servlet名要一致。
<url-pattern>/servlet/UserRegister</url-pattern>
定义servlet的表现形式,也就是用户在浏览器的地址栏输入的一部分url地址。

OK,到这里这个servlet算是完成了。


首先,使你的类继承HttpServlet类,让我们来看一看HttpServlet类的原码:

package javax.servlet.http;

import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.text.MessageFormat;
import java.util.Enumeration;
import java.util.ResourceBundle;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public abstract class HttpServlet extends GenericServlet
  implements Serializable


这里可以看见HttpServlet类继承GenericServlet类,而且继承了Serializable接口,我们来看一看GenericServlet的原码:

package javax.servlet;

import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.ResourceBundle;

public abstract class GenericServlet
  implements Servlet, ServletConfig, Serializable


里面也没什么。重点还是在HttpServlet这个类。

这个类里实现了几个HTTP协议请求的方法。比如:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
  {
    String protocol = req.getProtocol();
    String msg = lStrings.getString("http.method_post_not_supported");
    if (protocol.endsWith("1.1"))
      resp.sendError(405, msg);
    else
      resp.sendError(400, msg);
  }


因为我们在自己的类里覆盖了doPost方法,所以这里不会向页面发 resp.sendError(405, msg);或 resp.sendError(400, msg);错误。

HttpServlet类里的service方法实现了GenericServlet基类的service抽象方法。

首先,进行request = (HttpServletRequest)req;response = (HttpServletResponse)res;
转换,成功之后,掉用service(request, response);下面代码展现了这一过程。

 public void service(ServletRequest req, ServletResponse res)
    throws ServletException, IOException
  {
    HttpServletRequest request;
    HttpServletResponse response;
    try
    {
      request = (HttpServletRequest)req;
      response = (HttpServletResponse)res;
    } catch (ClassCastException e) {
      throw new ServletException("non-HTTP request or response");
    }
    service(request, response);
  }
}

  
之后,调用下面的service(request, response);方法。

 protected void service(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
  {
    long lastModified;
    String method = req.getMethod();

    if (method.equals("GET")) {
      lastModified = getLastModified(req);
      if (lastModified == -1L)
      {
        doGet(req, resp);
      } else {
        long ifModifiedSince = req.getDateHeader("If-Modified-Since");
        if (ifModifiedSince < lastModified / 1000L * 1000L)
        {
          maybeSetLastModified(resp, lastModified);
          doGet(req, resp);
        } else {
          resp.setStatus(304);
        }
      }
    }
    else if (method.equals("HEAD")) {
      lastModified = getLastModified(req);
      maybeSetLastModified(resp, lastModified);
      doHead(req, resp);
    }
    else if (method.equals("POST")) {
      doPost(req, resp);
    }
    else if (method.equals("PUT")) {
      doPut(req, resp);
    }
    else if (method.equals("DELETE")) {
      doDelete(req, resp);
    }
    else if (method.equals("OPTIONS")) {
      doOptions(req, resp);
    }
    else if (method.equals("TRACE")) {
      doTrace(req, resp);
    }
    else
    {
      String errMsg = lStrings.getString("http.method_not_implemented");
      Object[] errArgs = new Object[1];
      errArgs[0] = method;
      errMsg = MessageFormat.format(errMsg, errArgs);

      resp.sendError(501, errMsg);
    }
  }


这里可以看见,根据我们传入的请求和响应对象,判断应该执行哪个方法。
分享到:
评论

相关推荐

    jsp+servlet编写的验证码程序

    jsp+servlet编写的验证码程序是一个简单的验证码生成程序,使用jsp和servlet技术来生成验证码。该程序使用了java.awt包来生成随机颜色和随机字符,并使用java.awt.image.BufferedImage类来生成验证码图片。该程序...

    SERVLET编写的聊天程序

    在MyEclipse这样的集成开发环境中,你可以创建Servlet项目,编写Servlet类,并配置Web.xml文件来映射HTTP请求。MyEclipse是一个强大的工具,提供了便捷的Servlet开发和调试环境。 在实现聊天程序时,Servlet将扮演...

    编写JSP+JavaBean+Servlet(MVC)的程序

    在实际操作中,我们可以按照以下步骤来编写JSP+JavaBean+Servlet的程序: 1. 创建JavaBean类:定义一个Java类,封装必要的属性和方法,以代表业务实体或处理业务逻辑。 2. 编写JSP页面:使用JSP语法创建用户界面,...

    用于servlet程序的开发的servlet-jar包

    `servlet.jar.zip`是一个压缩包,专门用于servlet程序的开发。它包含的核心组件`servlet.jar`是Java Servlet容器(如Tomcat、Jetty等)运行Servlet应用的关键。开发者在构建web应用时,通常会将此jar包添加到项目的...

    手工编写Servlet的详细过程+实例

    在这个"手工编写Servlet的详细过程+实例"中,我们将深入探讨如何从零开始创建一个Servlet,包括Servlet的生命周期、部署描述符的配置以及实际编程步骤。首先,我们来理解Servlet的基本概念。 Servlet是一种Java类,...

    使用eclipse创建第一个servlet程序.docx

    使用 Eclipse 创建第一个 Servlet 程序 Servlet 是 Java 语言中的一种基于服务器端的组件,用于生成动态网页。使用 Eclipse 创建 Servlet 程序需要了解 Servlet 的基本概念、Tomcat 容器的结构、自定义 Servlet 的...

    jsp+servlet+javabean编写的简单的程序调用

    这个简单的程序调用示例旨在展示它们如何协同工作。 首先,我们来看`JSP`。`JSP`是一种用于创建动态网页的技术,它允许开发者在HTML页面中嵌入Java代码。JSP文件在服务器端执行,生成HTML响应,然后发送到客户端。...

    用eclipse 编写的servlet小demo

    【标题】"用eclipse 编写的servlet小demo"是一个简单的Java Web项目,它展示了如何在Eclipse集成开发环境中创建和运行一个Servlet程序。Servlet是Java编程语言中用于扩展服务器功能的Java类,通常用于处理HTTP请求。...

    根据以前提供的NumberGuessBean.java文件(模型类),编写SERVLET程序,实现猜数游戏

    根据以前提供的NumberGuessBean.java文件(模型类),编写SERVLET程序,实现猜数游戏。 重点考察: HttpServletRequest, HttpSession 猜数游戏可以参考TOMCAT提供的JSP 1.2 EXAMPLES

    servlet写的聊天程序

    在这个"Servlet写的聊天程序"中,开发者利用Servlet技术构建了一个多人聊天平台,实现了用户之间的实时交流。接下来,我们将深入探讨这个项目中涉及的关键知识点。 1. **Servlet**: Servlet是Java API的一部分,...

    编写Openfire插件Servlet小服务程序

    本文将详细探讨如何编写一个Openfire插件,其中包含Servlet小服务程序的实现。 首先,我们需要了解Openfire插件的基本结构。一个Openfire插件通常由以下几个部分组成: 1. **plugin.xml**:这是插件的核心配置文件...

    servlet学习demo程序

    在"Servlet学习demo程序"中,我们可能找到了一个名为ServletDemo的示例,这个例子可能是为了演示如何创建和运行一个简单的Servlet。 要入门Servlet,你需要理解以下几个关键概念: 1. **Servlet生命周期**:...

    Servlet编写登录

    通过这个"Servlet编写登录"的示例,你可以学习到Servlet的基本操作,包括如何处理HTTP请求,如何与数据库交互,以及如何实现简单的用户认证。随着对Servlet理解的深入,你可以进一步掌握Java Web开发的更多技巧和...

    JavaServlet程序设计初步

    JavaServlet程序设计初步是IT领域中关于Web开发的一项基础技术,它是Java EE(企业版)平台的一部分,用于构建动态Web应用程序。本节将深入探讨JavaServlet的核心概念、工作原理以及如何进行基本的程序设计。 一、...

    发布Servlet程序到服务器上

    1. **编写Servlet类**:例如,`HelloWorld`类继承自`HttpServlet`,并重写`doGet`方法来处理GET请求。在这个例子中,Servlet向客户端发送“Hello World!”的响应。 2. **设置开发环境**:确保类路径包含Servlet API...

    servlet程序开发之二

    Servlet程序开发是Web应用程序开发的重要组成部分,特别是在Java平台上。Servlet是一种Java类,它扩展了服务器的功能,能够处理HTTP请求并生成动态内容。本教程聚焦于Servlet的深入学习,旨在帮助开发者掌握这一关键...

    10+servlet程序开发.rar

    编写Servlet通常涉及以下步骤: 1. 继承 `javax.servlet.http.HttpServlet` 类或实现 `javax.servlet.Servlet` 接口。 2. 重写 `doGet()` 和/或 `doPost()` 方法,以处理HTTP请求。 3. 可选地,重写 `init()` 和 `...

    servlet编写、部署、运行全过程

    接下来,我们将详细介绍如何编写一个简单的Servlet。 1. **导入必要的包**: - `javax.servlet.http.HttpServlet`:这是所有HTTP Servlet的基类。 - `javax.servlet.http.HttpServletRequest` 和 `javax.servlet....

    servlet小程序

    在描述中提到“代码简单易懂”,这意味着这个煤炭系统中的Servlet实现可能包含清晰的逻辑结构和注释,方便学习和理解。通常,Servlet的编写包括以下步骤: 1. 导入必要的库,如`javax.servlet.*`和`javax.servlet....

    servlet入门servlet入门

    #### 三、创建第一个Servlet程序 下面通过一个简单的示例——“Hello World”Servlet,来了解Servlet的基本编程流程。 ```java package com.isoftstone.edu.servlet; import javax.servlet.*; import javax....

Global site tag (gtag.js) - Google Analytics