Java Servlet 应用小实例

相信很多开发web的人都使用过php,python,ruby等这些解释型语言,人们坚信的认为这些语言来开发web更加快捷,方便,那其实语言本身无可厚非,都是和计算机对话罢了,无论是最初模拟计算机的汇编还是到现在的图形编程,都只有一种语言,就是计算机语言。Java Web其实也是一个广为使用的分支,今儿我们就举一个Java Servlet的小例子,如果你使用其他语言开发过web,那么Servlet同样不难理解,完全一样的道理。
首先我们的要建立web目录,这个目录在tomcat的安装目录/webapps,我们在这个目录下建立一个文件夹test,然后新建一个test.java文件,写入如下代码:[java]
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class test extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>");
out.println("<BODY>");
out.println("<BIG>Hello World</BIG>");
out.println("</BODY></HTML>");
out.close();
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
}[/java]
以上我们实际上是实现了javax.servlet.Servlet接口的类,我们覆盖了HttpServlet的doGet()方法,用于对GET请求方法做出响应。在doGet()中,首先通过HttpServletResponse类的getWriter方法调用得到一个PrintWriter类型的输出流对象out,然后调用out的println()方法向客户端发送数据。
这里我们需要用到一个jar文件就是tomcat安装目录下的lib文件夹的servlet-api.jar文件,我们将这个文件加到环境变量或者将文件直接复制到jdk安装目录的类库扩展文件夹:D:\Program Files\Java\jdk1.7.0_17\jre\lib\ext。
然后我们进入这个文件的目录,在命令行下编译生成class文件。接下来我们在test下面建立文件夹WEB-INF,在WEB-INF下面建立文件夹classes,将刚才编译好的class文件放到classes文件夹,在WEB-INF文件夹下建立web.xml文件并且输入如下内容:[xml]
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>TestName</servlet-name>
<servlet-class>test</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>TestName</servlet-name>
<url-pattern>/myweb</url-pattern>
</servlet-mapping>
</web-app>[/xml]
以上文件第一行是XML声明,在跟元素web-app上声明了XML Schema的命名空间。
注意这个文件,使用了以及其子元素来部署test这个Servlet。在这个文件中可以包含多个,用于部署多个Servlet。
元素用于声明Servlet,子元素用于指定Servlet的名字,在同一个web应用程序中,每一个Servlet的名字必须是唯一的,该元素不能为空。子元素用于指定Servlet类的完整限定名(如果有包名,也就是package,同时给出包名)。
用于定义Servlet和URL之间的映射。其子元素指定的Servlet名字必须和中的子元素给出名字一致,用于指定Servlet的URL路径,此路径是相对于web应用程序的路径。
okay,你的tomcat开起来,我们可以这样访问你的web程序了:[html]
http://localhost:8080/test/myweb[/html]
再给出一个提交表单的小例子:
在webapps/test文件夹下面建立form.html文件:[html]
<html>
<head>
<title>form action</title>
</head>
<body>
<form action="forTest" method="get">
input name:<input type="text" name="user" value="uusername" />
<input type="submit" name="submit" />
</form>
</body>
</html>
[/html]
在此目录下再建立Form.java文件:[java]
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
public class Form extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
String user = req.getParameter("user");
String info = "hello " + user;
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html><head><title>");
out.println("form page");
out.println("</title></head>");
out.println("<body>");
out.println(info);
out.println("</body></html>");
out.close();
}
}[/java]
然后进入文件所在目录编译生成Form.class文件,将其复制到tomcat安装目录\webapps\test\WEB-INF\classes下面,同时编辑配置文件web.xml:[xml]
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>TestName</servlet-name>
<servlet-class>test</servlet-class>
</servlet>
<servlet>
<servlet-name>FormName</servlet-name>
<servlet-class>Form</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestName</servlet-name>
<url-pattern>/myweb</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FormName</servlet-name>
<url-pattern>/forTest</url-pattern>
</servlet-mapping>
</web-app>[/xml]
然后输入http://localhost:8080/test/form.html,出现表单,输入用户名gavin后点击submit之后就会get到http://localhost:8080/test/forTest?user=gavin&submit=%CC%E1%BD%BB%B2%E9%D1%AF,然后出现程序中的回应信息:hello gavin。
这里需要注意一个问题,servlet2.4规范中,因为是使用XML Schema 定义文档结构的,因此web.xml文件中元素的出现顺序无严格限定,而2.2和2.3中,因为是用DTD来定义文档的,servlet必须出现在servlet-mapping之前。

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in Java编程语言 and tagged , , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注