zoukankan      html  css  js  c++  java
  • 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="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">
    ";
    18         out.println(docType + "<html>
    " + "<head><title>" + title
    19                 + "</title></head>
    " + "<body bgcolor="#f0f0f0">
    "
    20                 + "<h1 align="center">" + title + "</h1>
    " + "<ul>
    "
    21                 + "  <li><b>用户名</b>:" + request.getParameter("username") + "
    "
    22                 + "  <li><b>密码</b>:" + request.getParameter("password") + "
    "
    23                 + "</ul>
    " + "</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>

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

  • 相关阅读:
    ZOJ Bookcase
    C*++ Calculations
    STL <cctype>
    线段树单点更新+区间更新
    ZOJ Supermarket
    STL <cassert>
    算法导论<二>
    MV Maker [DP]
    LIS 最长有序子序列(递增/递减/非递增/非递减)
    LIS
  • 原文地址:https://www.cnblogs.com/diyunfei/p/6549843.html
Copyright © 2011-2022 走看看