Servlet 是 JAVA EE 范畴,我们在学 JAVA 的时候课本的第一章都会说 JAVA 有三个分支,分别为 JAVA SE、JAVA EE 和 JAVA ME,对应的分别是标准平台、企业级平台和移动手机平台。
所以我们在编写 Servlet 程序的时候就得先安装 JAVA EE SDK,因为 Servlet 是用于部署在服务器的,所以我们需要在本机安装一个服务器软件,我们选择免费的 Tomcat。
刚才说了,Servlet 是用于支持网页应用的,所以我们得有一定的 HTML 基础、CSS 基础和 Javascript 基础。
我们通过模拟提交登录表单概述 Servlet 的工作与开发流程:
网页文件时呈现在用户面前的文件,炫丽的效果会使用户心情愉悦,所以某些大中型公司都会有专门的美工部门,编写 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>
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 提交方式。编译后保存备用。
Tomcat 是 Apache 出品的一款优秀的开源的免费的 JSP 服务器。使用 Tomcat 前得先确保电脑安装了 JDK 或者 JRE,并且正确配置了 JAVA_HOME。
打开 Tomcat 服务器的方法是进入 Tomcat 安装目录,进入 bin 文件夹,Linux/Unix 用户双击 startup.sh 启动,Windows 用户双击 startup.bat 启动。
我们还要了解一下 Tomcat 的一些目录结构:
以后我们接触最多的就是 webapps 目录了,这个目录顾名思义是给我们存放网页和 Servlet 文件的地方,也提供了一些模板示例。我们可以参照里面的示例创建文件系统。注意将第二步编译好的 LoginServlet.class 放在对应目录。
配置 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 ,“/”不能丢。
接下来的步骤是修改之前的 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 文件要配置到服务器。
假设我们的 HTML 文件名称为 loginSv.html。
通过调用浏览器输入网址 localhost/loginApp/loginSv.html 测试通过服务器对页面的调用以及对页面的处理。
当用户登录 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…