学习原因和目的:
 
我如今所接触的项目都是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. Win10/UWP新特性—SharedStorageAccessManager 共享文件

    首先先给大家推荐一个UWP/Win10开发者群:53078485  里面有很多大婶,还有很多学习资源,欢迎大家来一起讨论Win10开发! 在UWP开发中,微软提供了一个新的特性叫做SharedStor ...

  2. python requests 模块初探

    现在经常需要在网页中获取相关内容. 其中无非获取网页返回状态,以及查看网页获取的内容几个方面,那么在这方面来看requests可能比urllib2库更简便一些. 比如:先用方法获取网页 r = req ...

  3. 【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)

    缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行. 1. zoom 的定义 缩放是由 d3.behavior.zoom() 定义的. var zoom = d3.behavior.z ...

  4. 使用html模板

    创建html---点击next--选择写好的模板

  5. 登录phpmyadmin提示: #1045 无法登录 MySQL 服务器

    打开phpmyadmin,进行登录,出现以下问题,提示:#1045 无法登录 MySQL 服务器 或许出现以下错误情况:phpmyadmin:#1045 无法登录 MySQL 服务器.Access d ...

  6. public/private/protected访问控制权限的区别

    //public/private/protected访问控制权限的区别//时间:2016/8/16 //(一)修饰成员: //public: 在类内.类外都能使用 . //protected: 在类内 ...

  7. js传递json格式对象到服务器

    var message = new Object();message.event = "test";message.params = new Object();message.pa ...

  8. java可变参数

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持 ...

  9. nodeType、nodeName和nodeValue

    首先了解一下DOM中有三大节点,分别是 元素节点,文本节点,属性节点 元素节点:构成了DOM的基础.文档结构中,<html>是根元素,代表整个文档,其他的还有<head>,&l ...

  10. HDU1434(终于用优先队列a了一题。。。了解度+1)

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...