今天再一次开品尝servlet这顿大餐了,第一品尝是在李宁项目中(说实在的没搞明白就完了,应该说自己就没有做,这一点自己真的很欠缺,自己应该好好弥补一下),这次品尝是在DRP中,这次的感觉和上一次有很大的不同,上一次的感觉一头雾水,有很多细节的地方不是很明白,这次在DRP中整明白了。
一:示例准备
首先声明一下,我的tomcat装在d:盘(D:\tomcat7.0.22)这是路径
在其目录webapps目录下建立如下一个小工程,在test_servlet文件夹下添加一个login.html网页和在WEB-INF目录下添加一个web.xml配置文件,在classes中加入一个LoginServlet.class类(随便建一个LoginServlet.java然后用javac进行编译成LoginServlet.class,将文件拷过去,至于如何编译上网搜一下就行了,这就不细讲了)
二:servlet运行原理图
三:servlet运行示例程序
下面是以我的小工程为实例:
1.test_servlet中代码示例:
<html>
<head>
<title>登录</title>
</head>
<body>
<form action ="loginServlet">
用户:<input type="text" name="username"><br>
密码:<input type="password" name ="password"><br>
<input type ="submit" value="登录">
</form>
</body>
</html>
代码分析:action就是直接转到web.xml<url-pattern>中,action后面还缺省一个method(doGet和doPost对应于这两种传参方式),一般缺省情况下是doGet,也可以用方法doPost。
doGet:GET调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。
doPost:它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
2.web.xml中代码:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
<servlet>中<servlet-name>你给你的servlet命的名和<servlet-mapping>中<servlet-name>保持一致就行
<servlet>中<servlet-class>就是你生成的class,<servlet-mapping>中的<url-pattern>指向的相对路径
3.LoginServlet.java代码
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
String username=request.getParameter("username");
String password=request.getParameter("password");
System.out.println("username="+username);
System.out.println("password="+password);
response.setContentType("text/html");
response.getWriter().println("登录成功");
}
}
总结:经过这个例子的历练我更深刻理解了servlet的运行机制,一幅图胜过千言万语。