Servlet 概述

Servlet 是 JAVA EE 范畴,我们在学 JAVA 的时候课本的第一章都会说 JAVA 有三个分支,分别为 JAVA SE、JAVA EE 和 JAVA ME,对应的分别是标准平台、企业级平台和移动手机平台。

所以我们在编写 Servlet 程序的时候就得先安装 JAVA EE SDK,因为 Servlet 是用于部署在服务器的,所以我们需要在本机安装一个服务器软件,我们选择免费的 Tomcat。

刚才说了,Servlet 是用于支持网页应用的,所以我们得有一定的 HTML 基础、CSS 基础和 Javascript 基础。

我们通过模拟提交登录表单概述 Servlet 的工作与开发流程:

1、编写网页文件

网页文件时呈现在用户面前的文件,炫丽的效果会使用户心情愉悦,所以某些大中型公司都会有专门的美工部门,编写 CSS 文件和 Javascript 文件来美化我们的 HTML 网页,是的具有更抢眼的表现力。我们在此仅仅实现最基本的 HTML 网页。精简的代码如下:

 
   1:  <form>
   2:      Username:<input type="text" name="username"/>
   
   br>
   3:      Password:<input type="password" name="password"/>
   
   br>
   4:      <input type="submit" value="Submit"/>
   5:  
   
   form>
2、Servlet 程序的编写

Servlet 的编写可以再 MyEclipse 或者 Eclipse EE 中进行,当然其他的文本编辑器也可以,如 Notepad++。

Servlet 的用途是对浏览器提按照 HTTP 协议提交过来的文件进行解析。编写的 Servlet 文件应该继承自 HttpServlet,HttpServlet 是一个抽象类,里面定义了很多对 HTTP 协议进行解析的方法,如 doPost 与 doGet 等等,我们可以通过覆盖特定的方法实现我们自己的特俗要求。我们可以编写代码如下:

 
   1:  import java.io.IOException;
   2:   
   3:  import javax.servlet.ServletException;
   4:  import javax.servlet.http.HttpServlet;
   5:  import javax.servlet.http.HttpServletRequest;
   6:  import javax.servlet.http.HttpServletResponse;
   7:   
   8:  public class LoginServlet extends HttpServlet {
   9:   
  10:      @Override
  11:      public void doGet(HttpServletRequest req, HttpServletResponse resp)
  12:              throws ServletException, IOException {
  13:          String username = req.getParameter("username");
  14:          String password = req.getParameter("password");
  15:          System.out.println(username);
  16:          System.out.println(password);
  17:   
  18:          resp.setContentType("text/html;charset=gb2312");
  19:          resp.getWriter().println("Login succeed!");
  20:      }
  21:   
  22:      @Override
  23:      public void doPost(HttpServletRequest req, HttpServletResponse resp)
  24:              throws ServletException, IOException {
  25:          doGet(req,resp);
  26:      }
  27:   
  28:  }

上面的代码覆盖了 HttpServlet 的 doGet 和 doPost 方法,而 doPost 方法仅仅是对 doGet 方法的调用。这样一来,无论浏览器的 HTML 网页采用何种发生提交,我们都可以做出同样的反应。由于涉及到密码的提交,我们选择 POST 提交方式。编译后保存备用。

3、认识 Tomcat

Tomcat 是 Apache 出品的一款优秀的开源的免费的 JSP 服务器。使用 Tomcat 前得先确保电脑安装了 JDK 或者 JRE,并且正确配置了 JAVA_HOME。

打开 Tomcat 服务器的方法是进入 Tomcat 安装目录,进入 bin 文件夹,Linux/Unix 用户双击 startup.sh 启动,Windows 用户双击 startup.bat 启动。

我们还要了解一下 Tomcat 的一些目录结构:

以后我们接触最多的就是 webapps 目录了,这个目录顾名思义是给我们存放网页和 Servlet 文件的地方,也提供了一些模板示例。我们可以参照里面的示例创建文件系统。注意将第二步编译好的 LoginServlet.class 放在对应目录。

4、配置 web.xml

配置 web.xml 文件时一个较为头疼的事情,可以参照下面的代码进行配置:

 
   1:  
   
   xml version="1.0" encoding="UTF-8"?>
   2:  <web-app version="2.5" 
   3:      xmlns="http://java.sun.com/xml/ns/javaee" 
   4:      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   5:      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   6:      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   7:      <servlet>
   8:          <servlet-name>LoginServlet
   
   servlet-name>
   9:          <servlet-class>LoginServlet
   
   servlet-class>
  10:      
   
   servlet>
  11:      <servlet-mapping>
  12:          <servlet-name>LoginServlet
   
   servlet-name>
  13:          <url-pattern>/login
   
   url-pattern>
  14:      
   
   servlet-mapping>
  15:  
   
   web-app>

配置上面的 web.xml ,我们可以从 Tomcat 提供的示例文件里面复制 web.xml 到自己的目录进行修改完成,注意 标签的内容是 /login ,“/”不能丢。

5、修改 HTML 文件

接下来的步骤是修改之前的 HTML 文件,使得 HTML 文件与 Servlet 相关联,代码如下:

 
   1:  <form action="login" method="post">
   2:      Username:<input type="text" name="username"/>
   
   br>
   3:      Password:<input type="password" name="password"/>
   
   br>
   4:      <input type="submit" value="Submit"/>
   5:  
   
   form>

注意到 action 属性的值是 login 而不是 /login,切记。

此外,如果不好理解上面的 action="login",可以看看下面的代码,假设我们的项目名称叫做 loginApp:

 
   1:  <form action="http://localhost/loginApp/login" method="post">

这两个 action 在此处的作用是一样的。注意修改后的 HTML 文件要配置到服务器。

6、尝试访问

假设我们的 HTML 文件名称为 loginSv.html。

通过调用浏览器输入网址 localhost/loginApp/loginSv.html 测试通过服务器对页面的调用以及对页面的处理。

7、简单分析

当用户登录 localhost/loginApp/loginSv.html 时候,Tomcat 会根据传入的地址截取出项目的名称 loginApp 然后到 loginApp里面找 loginSvl.html 反馈给用户浏览器。当用户在 loginSv.html 中点击 submit 按钮时,浏览器会自动提交表单给服务器,Tomcat 根据传来的 action 在 web.xml 中对应到 标签,由此一直向上找到 、 然后调用对应的 Servlet Class 对提交的表单进行解析操作。

Tomcat 依照 Servlet Class 的完整路径,利用反射机制,对 Servlet Class 进行实例化,调用里面的 service() 方法,service() 方法判断并调用正确的处理方法进行处理,如调用 doPost() ,doPost() 依照我们的业务逻辑进行相应工作,如获取参数,进行参数验证,连接服务器,返回字符串等待。

---EOF---

tiny man , huge ego…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值