学习原因和目的:
 
我如今所接触的项目都是bs模式的web应用,而里边基本上都是用的spring MVC和前台交互,servlet貌似用的很少。
 
但是即便是用spring和spring MVC,项目中依旧是少不了web.xml文件,而这里边的配置看来看去根本就是servlet的配置。
 
因此为了更好的理解这些配置,我想还是需要从servlet入手。
 
servlet在百度中的解释是:
 
用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
 
 
学习和理解:
 
据我所知,编写servlet有多种方式,而现在比较常见的是集成httpservlet类,然后重写doget和dopost等方法。因此我在理解的过程中也就以这个为基础。
 
这种简单的实现,需要在项目中导入servlet的jar包。
 
要验证自己写的servlet以及配置是否正确,就需要涉及到简单的页面,jsp或者html,如下:
 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. </head>
  6. <body>
  7. <form action="./cookieServlet" method="post">
  8. <input type="text" name="userName"/>
  9. <input type="password" name="password"/>
  10. <input type="submit" value="login"/>
  11. </form>
  12. </body>
  13. </html>
 
页面只是个非常简单的form表单,包含了username和password两个文本输入框,和表单提交按钮。需要注意的是,input中不能少了name属性,这个属性是和后台交互的关键,有了它,后台才能用request.getParameter()方法正确获取文本框中输入的内容。这一点有经验的朋友肯定都知道,但刚进入软件开发的时候我因为不知道这个问题而遇到过困难,想来对初学者大概有用。
 
在这个页面中,填好用户名和密码后,点击提交,浏览器会向服务器发送一个cookieServlet请求,同时把页面填好的userName和password传入后台。后台就可以通过相应的方法获取数据进行一定的逻辑处理,对应的servlet代码如下:
 
  1. package servletTest;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.Cookie;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;
  9. public class CookieServlet extends HttpServlet {
  10. @Override
  11. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  12. throws ServletException, IOException {
  13. super.doGet(req, resp);
  14. }
  15. @Override
  16. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  17. throws ServletException, IOException {
  18. String userName = req.getParameter("userName");
  19. String password = req.getParameter("password");
  20. }
  21. }
在这个代码中,自己新建了一个CookieServlet类,集成了httpservlet并重写doPost方法,在方法里获取userName和password。
 
截止到这里,看起来都非常的简单,不论是页面还是java代码都不难理解。但是如果只是这样的话,实际上是不行的,还需要配置web.xml文件才能让前后台联系起来,成功的实现交互。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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. id="WebApp_ID" version="2.5">
  6. <display-name>cookieTest</display-name>
  7. <servlet>
  8. <servlet-name>login</servlet-name>
  9. <servlet-class>servletTest.CookieServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>login</servlet-name>
  13. <url-pattern>/cookieServlet</url-pattern>
  14. </servlet-mapping>
  15. <welcome-file-list>
  16. <welcome-file>index.html</welcome-file>
  17. </welcome-file-list>
  18. </web-app>
这里边,首先要注册一个servlet,也就是下边这个:
<servlet>
     <servlet-name>login</servlet-name>
     <servlet-class>servletTest.CookieServlet</servlet-class>
  </servlet>
 

然后是对应的映射:

<servlet-mapping>
     <servlet-name>login</servlet-name>
     <url-pattern>/cookieServlet</url-pattern>
  </servlet-mapping>
 

那么有了这两个配置后,当页面向服务器发送cookieServlet请求后,web.xml就会找到url-pattern>/cookieServlet</url-pattern>这里,然后根据这个找个他所在的<servlet-mapping>里的<servlet-name>是什么。

 
可以看到在我这里,对应的<servlet-name>是login,于是web.xml在根据这个login去寻找含有<servlet-name>login</servlet-name>的<servlet>。
 
当找到这个<servlet>以后,便能获取到其中的<servlet-class>servletTest.CookieServlet</servlet-class>,这里<servlet-class>里边写的就是我们编写的后台servlet类的全路径,也就是完整的包名加上类名。
 
于是乎,有了这个配置,我们的程序就知道了相应的请求应该去走哪个后台代码,从而实现关联和交互。

servlet简单用法和配置示例及说明的更多相关文章

  1. Nginx 简单的负载均衡配置示例(转载)

    原文地址:Nginx 简单的负载均衡配置示例(转载) 作者:水中游于 www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www ...

  2. Spring简单的文件配置

    Spring简单的文件配置 “计应134(实验班) 凌豪” 一.Spring文件配置 spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解. 首先,要在web. ...

  3. Servlet简单总结(一)

    一.Servlet简单总结 1.1. 什么是Servlet Servlet是JavaEE三大组建之一,是使用Java语言编写服务器端的程序,主要用来处理Web应用程序中的请求-响应.Servlet并没 ...

  4. IDEA新建javaWeb以及Servlet简单实现

    刚开始用IDEA开发,还不太熟悉,因此写一个教程,加深印象 1.新建一个Web项目 两种方法:java 和 Java Enterprise(推荐) 第一种)通过Java工程创建,这个方法需要手动导入T ...

  5. HBase + Kerberos 配置示例(二)

    接上篇<HBase + Kerberos配置示例(一)>,我们继续剩下的配置工作. 环境准备 Hadoop配置 Zookeeper配置 HBase配置 Java测试程序 环境准备 安装ha ...

  6. Intellij IDEA创建javaWeb以及Servlet简单实现

    1.创建web工程 File --> New --> Project...

  7. MyBatis Generator配置示例

    (一).MBG介绍 MyBatis Generator(MBG)是一个Mybatis的代码生成器,它可以用来生成可以访问(多个)表的基础对象.MBG解决了对数据库操作有最大影响的一些简单的CRUD(插 ...

  8. Intellijidea建javaWeb以及Servlet简单实现

    一.创建并设置javaweb工程1.创建javaweb工程File --> New --> Project... 点击Project后出现如下界面,选择Java Enterprise,选中 ...

  9. haproxy反向代理配置示例

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. 深入理解css系列:css定位

    一.概述 1.默认文档流定位方式 (1).HTML默认文档以流模式定位,即内容元素按照先后顺序依次上下定位: (2).HTML标签元素总体分为块状元素.内联元素.内联块状元素,可通过该标签对应的DOM ...

  2. zynq中uboot的qspi启动报错及解决办法

    问题描述: 用u-boot-xlnx-v2016.3版本编译的uboot通过qspi flash启动出现如下错误: 尝试在uboot命令行输入"sf probe 0 0 0"挂载q ...

  3. Cosh.3

    查壳.没有 拖 OD 查找字符串 找到有用的东西   顺线往上看       找到  大概算入口处  下断 就从这里开始  单步下去吧 name的变幻 Serial的变幻 直接翻译出来了   继续看看 ...

  4. RabbitMQ - 引入库产生的一次pthread_create错误

    最近在项目中使用rabbitMQ,在引入编译生成的libamqpcpp.so库文件,由于各个文件夹之间需要使用静态库进行连接,所以在引入libamqpcpp.so基础上再进行了一次.a文件生成.编译执 ...

  5. 问题:C++ 删除数组指针实用 delete []变量 汇编怎么实现的?

    问题:C++ 删除数组指针实用  delete []变量    汇编怎么实现的?

  6. python和nodejs的aes128加密对比

    之前的机器人是用python写的,有同事想改写成nodejs版,但是验证一直通不过,于是帮忙爬了一下文档. python版的代码大概是长这样: #encoding:utf8 from Crypto.C ...

  7. 如何制作快速加载的HTML页面

    整理出来的tip 减小页面的大小 在页面下载中,页面的大小至今扮演着非常重要的因素. 减小页面的大小能够通过排除不必要空格,注释,动态内嵌脚本,和放入外部文件的 CSS 等在页面结构中很小的改变都能够 ...

  8. 给UIWebView调整UserAgent字段

    +(void)setWebViewUserAgent:(NSString *)suffix { UIWebView *webView = [[UIWebView alloc] initWithFram ...

  9. 【转】JavaScript获取节点类型、节点名称和节点值

    DOM节点信息包括节点类型(nodeType).节点名称(nodeName)和节点值(nodeValue). 节点类型 DOM节点中,每个节点都拥有不同的类型.W3C规范中常用的 DOM节点类型有以下 ...

  10. 数论 UVAlive 2889

    这是一道考察回文数的题目,要求你输出第k个回文数.在做题的过程中,可以发现回文数的分布的规律:一位数:9个,二位数:9个,三位数:90个,四位数:90个,五位数:900个,六位数:900个……. #i ...