首页 > 代码库 > MyFirstServlet学习笔记

MyFirstServlet学习笔记

MyFirstServlet学习笔记

项目文件的结构目录如下,ser包,下设Serv.java是一个servlet文件,Note只是做的笔记,webroot下有login.jsp,WEB-INF下有web.xml,lib当中有servlet-api.jar文件。

技术分享

首先是login.jsp文件,Form表单的action指向Servlet名称,在本项目中为Serv,method方法post或者get都可以。

技术分享

下面是Serv.java文件,位于ser包下,使用request.getParmeter("")获取jsp页面form表单中值,在out.println中输出一个HTML页面,使用doPost方法引用doGet方法,这样不管form表单使用method哪个方法,servlet都可以进行处理。

技术分享

接下来是web.xml的配置问题,所有的servlet配置信息都要写在web-app标签中,标签<servlet>当中,name即为servlet类名,servlet-class内容写包名.类名,下面的servlet-mapping标签中的name和上面的servlet名称相同,url-pattern标签的内容需要和jsp页面form表单中action的内容必须相同,注意url-pattern内容中有一个斜杠/,而action当中没有斜杠。

技术分享

最后说明一下jsp+servlet+web.xml的运行过程:

运行jsp之后,form表单在浏览器页面当中显示出来,点击按钮submit之后,form表单首先指向action当中的内容,接着去web.xml里面的url-pattern当中查找和action内容相同的内容,所以action内容和url-pattern内容必须一致,(内容可以随便写,但必须内容一样,否则会出现页面找不到url-pattern的错误)。相同的url-pattern内容找到之后,然后程序根据当前url-pattern标签所在的servlet-mapping找servlet-name(所以这两个name需要相同),再根据这个name找当前<servlet>标签中那么相同的,然后根据后面的这个name找class文件,这样就找到了Serv.class文件,就可以运行Serv.java文件了。

具体的图片说明:action指向1的url-pattern,然后1指向2的name,2去找servlet标签中相同的name3,3去找class对应的路径文件,就是这样一个调用关系。

技术分享

 

 

最后附上项目三个主要文件源代码:

index.jsp

 

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6  7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9   <head>10     <base href="<%=basePath%>">11     12     <title>登陆</title>13     <meta http-equiv="pragma" content="no-cache">14     <meta http-equiv="cache-control" content="no-cache">15     <meta http-equiv="expires" content="0">    16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">17     <meta http-equiv="description" content="This is my page">18     <!--19     <link rel="stylesheet" type="text/css" href="http://www.mamicode.com/styles.css">20     -->21   </head>22   23   <body>24     <!-- action里面的内容需要和web.xml中url-pattern中内容相同,可以随便写,但必须相同,25     因为submit之后指向action当中的内容,这时程序会找web.xml当中的url-pattern -->26       <form id="form1" name="form1" action="Serv" method="post">27           用户名:<input type="text" id="username" name="username" > <br>28           密码:<input type="password" id="password" name="password" > <br>29           <input type="submit" value="登陆">30       </form>31   </body>32 </html>

 

 

Serv.java

 1 package ser; 2 //导入必需的 java 库 3 import java.io.*; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 //扩展 HttpServlet 类 7 public class Serv extends HttpServlet { 8     // 处理 GET 方法请求的方法 9     public void doGet(HttpServletRequest request, HttpServletResponse response)10             throws ServletException, IOException {11         // 设置响应内容类型12         response.setContentType("text/html;charset=utf-8");13         14         PrintWriter out = response.getWriter();15         String title = "Using POST Method to Read Form Data";16         String docType = "<!doctype html public \"-//w3c//dtd html 4.0 "17                 + "transitional//en\">\n";18         out.println(docType + "<html>\n" + "<head><title>" + title19                 + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n"20                 + "<h1 align=\"center\">" + title + "</h1>\n" + "<ul>\n"21                 + "  <li><b>用户名</b>:" + request.getParameter("username") + "\n"22                 + "  <li><b>密码</b>:" + request.getParameter("password") + "\n"23                 + "</ul>\n" + "</body></html>");24     }25     // 处理 POST 方法请求的方法26     public void doPost(HttpServletRequest request, HttpServletResponse response)27             throws ServletException, IOException {28         doGet(request, response);29     }30 }

 

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3     xmlns="http://java.sun.com/xml/ns/javaee" 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5     id="WebApp_ID" version="3.0"> 6      7     <welcome-file-list> 8         <welcome-file>login.jsp</welcome-file> 9     </welcome-file-list>10     11     <servlet>12         <!--servlet类名 -->13         <servlet-name>Serv</servlet-name>14         <!--servlet所在的包名.servlet类名 -->15         <servlet-class>ser.Serv</servlet-class>16     </servlet>17 18     <servlet-mapping>19         <!--servlet类名,和上面的类名必须相同 -->20         <servlet-name>Serv</servlet-name>21         <!-- jsp页面的form表单中action的内容,和这里相同 -->22         <url-pattern>/Serv</url-pattern>23     </servlet-mapping>24 25 </web-app>

 

以上内容只是本人根据个人经历得出,如有不对或者不妥的地方,还请不吝赐教。

MyFirstServlet学习笔记