servlet运行原理

今天再一次开品尝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] view plain copy print ?
  1. <html>  
  2.     <head>  
  3.         <title>登录</title>  
  4.     </head>  
  5.     <body>  
  6.         <form action ="loginServlet">  
  7.             用户:<input type="text" name="username"><br>            
  8.             密码:<input type="password" name ="password"><br>  
  9.             <input type ="submit" value="登录">   
  10.     </form>  
  11.     </body>  
  12. </html>  

<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中代码:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  6.   version="3.0">    
  7.  <servlet>  
  8.         <servlet-name>MyServlet</servlet-name>  
  9.         <servlet-class>LoginServlet</servlet-class>  
  10.     </servlet>  
  11.       
  12.     <servlet-mapping>  
  13.         <servlet-name>MyServlet</servlet-name>  
  14.         <url-pattern>/loginServlet</url-pattern>  
  15.     </servlet-mapping>  
  16.   
  17. </web-app>  

<?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代码

[java] view plain copy print ?
  1. import java.io.*;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4. public class LoginServlet extends HttpServlet{  
  5.     public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException  
  6.     {  
  7.        String username=request.getParameter("username");  
  8.        String password=request.getParameter("password");  
  9.          
  10.        System.out.println("username="+username);  
  11.        System.out.println("password="+password);  
  12.          
  13.        response.setContentType("text/html");  
  14.        response.getWriter().println("登录成功");  
  15.     }  
  16. }  

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的运行机制,一幅图胜过千言万语。

你可能感兴趣的:(servlet)