学习原因和目的:
 
我如今所接触的项目都是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. vue学习笔记

    来公司以后就一直在用vue框架,不管是业务代码,还是做vue组件.关于vue有一些点是文档中没有提及的,记录一下以便以后查询- 一.Vue的特点 新一代 Vue.js 框架非常关注如何用极少的外部特性 ...

  2. B样条基函数(cubic spline basis)

    B样条基函数用作权重 reference http://blog.csdn.net/tuqu

  3. selenium win7+selenium2.0+python环境搭建

  4. IOS中延迟执行的几种方法

    前几天去国美在线面试,就遇到了上面的问题,当时是笔试,只写出来了第一种方法,现在整理了一下. //1.performSelector方法:在当前线程中执行的方法,使用默认模式,并延迟执行@select ...

  5. NLP中word2vec的CBOW模型和Skip-Gram模型

    参考:tensorflow_manual_cn.pdf     Page83 例子(数据集): the quick brown fox jumped over the lazy dog. (1)CBO ...

  6. 转---B/S结构JavaEE WebApp的全自动安装包制作心得

    JavaEE的Web应用程序如今已大行其道,但其安装.配置.部署却一直繁琐无比,客观上阻碍了Web应用程序更大规模的推广和应用.因此,开发方制作一个集JDK.Web中间件.开源数据库的全自动安装程序很 ...

  7. Character Timing for T=0

    The minimum interval between the leading edges of the start bits of two consecutive characters sent ...

  8. wordpress导入模板数据

    主题安装完成以后,如果有主题的DEMO数据(xml格式的)的话可以导入,导入后该有的页面与分类文章等等都会有了,这样子会节省很多时间,导入后只需要更改对应的页面与分类就可以了. 导入方法: 1. 在后 ...

  9. Scrollview嵌套listview

    //建立Scrollview类 public class MyScrollView extends ScrollView { public MyScrollView(Context context, ...

  10. 使用TCP的HelloServer

    HelloServer是一个在1234端口监听的服务端程序,它接受客户送来的数据,并且把这些数据解释为响应的ASCII字符,再对客户做出类似“Hello,...!"这样的响应.以下是Hell ...