最近工作上效率比较低,各种需求更改耗费了大量的时间成本(不吐槽,你懂的,已无力),高的身心俱疲。... ... 每次废话都比较多,我也是服了自己了,就当我是来凑字数的吧!不废话了,开始正题:

翻了一下上一篇文章,发现没有装开发环境,这里补上——在【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建中已经配好了JDK,这次直接找一个JavaEE版本的Eclipse解压到我们想安装的目录下即可,用过 Eclipse+ADT 开发 Android 的同学都知道 Eclipse 是免安装的,在 /eclipse 下直接打开 eclipse.exe 即可。

到此我们只是简单安装了一个服务器的运行环境,现在我们开始写自己的服务器程序。 不管你是学Java的,还是 Android 的,肯定都学过 Core-Java 课程,那么你肯定学过 Servlet ,或许你忘了,但这无所谓,我们重新开始。

一、Servlet简介

摘自书上的一小段解释——“Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页”。Servlet 是 sun 公司提供的一门用于开发动态 web 资源的技术。其实,"Servlet"本来是指 Java语言实现的一个接口(狭义的Servlet),但更多的也更普遍的情况是:我们把任何实现了 Servlet 接口的类都叫作 "Servlet"。Servlet 的作用主要是对 Request 的请求数据进行解析、按照业务逻辑处理并将结果封装成 Response 返回我的理解就是“读-计算-写”,像数学计算器一样,输入操作数、操作符按"等于"就显示出结果;也像人的脑神经元一样“接受刺激-信号处理-作出响应”。为了便于理解,我们来慢慢拆解:

二、Servlet在服务器中的位置

在普通用户看来,我们平时使用互联网就像下图这样:

普通用户只关心自己作为一个客户端,是和一个叫服务器的东西在进行数据交互,具体服务器在哪里、做什么、怎么实现、数据库用哪种... ...这些都不重要。

而作为开发者的我们,用户不关心的问题我们却理当视如家珍(这是我们吃饭的家伙啊)——我们将服务器部分放大,从一个入门级的服务器开发者的角度来看看服务器的构造(这里仅以 Servlet 为例):

服务器接收来自不同用户的不同的请求(当然是以该服务器作为请求目标的那些请求),分析不同的请求,控制模块将各自的请求分送至对应的 Servlet (如登陆请求,则将登陆数据送至LoginServlet),然后 Servlet 根据请求内容处理业务逻辑(如登陆请求则解析用户名密码,并和数据库中保存的用户名密码进行对比,得出是否是合法用户的结论),完成响应数据的封装返回给控制模块,控制模块再将该响应返回给对应的请求用户,这样即完成一次网络交互。

三、从小白开始使用Servlet

        下面,我们来一步一步开始使用 Servlet 创建一个应用服务器:
        在 JavaEE 版的 Eclipse 中创建 Dynamic Web Project (我们这里以一个全新的 workspace 为例,为什么用一个新的workspace?后边会涉及到):
        
        
        接下来的步骤都默认,Next 直到下图:
        
        到此,工程创建成功,我们来简单了解一下目录结构:
        
        这里需要说明一下:在创建工程时我们的 Dynamic web module version 选项默认选择的3.0,就会出现后面要勾选 Generate web.xml deployment descriptor 才能创建 web.xml 文件的情况,若是3.0之前的版本是没有这个勾选选项的,而web.xml文件是默认创建的。这是因为Servlet3.0 的新注解机制的结果。
        
        新建 Servlet 类:
        
        
           
        不知道是什么就先Add一下,待会看看是什么。
        URL mappings,我更改成 /Home/FirstServlet:
        
        NEXT:
        
        看一看都重写了哪些方法,最后 finish,我们第一个Servlet就创建好了。
        打开刚创建的 FirstServlet.java 看看——Oh!Shit!你会惊讶的发现“祖国江山一片红”,各种类未定义、各种包找不见!不要惊讶,这就是刚开始我们以一个全新的 WorkSpace 为例的原因。
        发现问题解决问题,我们是天不怕地不怕的程序猿
        还记得我在创建 Servlet 时指定名字的下一个选项吗?就是这个:
        ,可以看到Servlet的父类是 java.servlet.http.HttpServlet,而在这里找不到,说明还缺东西,不是 .jar 就是环境。——这就是问题所在。
        问题根源找到就容易解决了——还记得我们一开始创建 Dynamic Web Project 的时候并没有指定 Target runtime 吗?这就是指定运行时环境,就是我们比较外行的说法-环境问题。没关系,现在我们再来做这件事:
        在 Project Explorer 空白区域 > 右键 > New > Other > 选择Server:
        
        NEXT > 选择Tomcat Server(由于我的 Tomcat 装的是8.0.32,我在【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建中给的也是这个版本,所以这里选 v8.0,各位要根据自己的 Tomcat 选择相应的版本):
        
        NEXT > 设置 Tomcat 安装路径(JRE可以workspace默认的JRE,也可以选择一个特定的JRE,如JRE1.7),之后 finish完成:
        
        (也可以Next > 将之前创建的 工程Add到服务器中,再finish,这一步是可选的):
        
        发现之前各种错误一片红还是没有解决?不要着急,再一步就搞定了——
        刚刚创建的工程"右键" > properties > Targeted Runtimes,勾选刚创建好的Server,OK,看看工程,正常了吧?当然,这些创建或选择 Target Runtime 也可以在创建工程的时候就做,只是我这里单独拿出来走一遍而已,让我们都印象深刻一点。好了,这个问题解决了。继续回到我们的主线。
        我们再来看之前留下的那个问题——Initialization parameters、URL mappings 是什么,字面意思就是初始化参数、URL 映射。结合上下文,我们是在创建 Servlet 的时候编辑的这些内容,所以初始化参数肯定是这个 Servlet 的参数,URL 映射也肯定是这个 Servlet 的路径映射。
        为了比较,我们再创建一个 PreferenceServlet ,在创建过程中可以不填的选项都不填,对比一下代码,会发现不同的地只有有如下:
        FirstServlet中有:
@WebServlet(description = "学习Servlet创建的", urlPatterns = { "/Home/FirstServlet" }, initParams = {@WebInitParam(name = "userName", value = "abc", description = "用户姓名") })
        PreferenceServlet中为:

@WebServlet("/Home/PreferenceServlet")
        可以发现,之前添加的这些选项都是以注解的方式出现的一些说明、初始化参数。为了理解这一点,我找出了Servlet3.0之前版本的 web.xml文件中对Servlet的配置文件内容进行说明:

 <servlet><servlet-name>FirstServlet</servlet-name><servlet-class>servlet.FirstServlet</servlet-class><init-param><param-name>userName</param-name><param-value>abc</param-value></init-param></servlet><servlet-mapping><servlet-name>FirstServlet</servlet-name><url-pattern>/Home/FirstServlet</url-pattern></servlet-mapping>

这两种写法的功能是一样的,只是Servlet3.0之后支持注解的方式进行配置更方便、更高效而已。<servlet>标签和<servlet-mapping>标签相互对应,servlet-name 必须一致(可以有多个mapping对应一个Servlet,即多个地址对应一个目标),当一个请求到达后,服务器先在<servlet-mapping>中寻找匹配的地址,然后用对应的 servlet-name 在<servlet>标签中匹配该请求 Servlet 对应的Java类,然后将请求发送至该类;初始化参数可用 getInitParameter("parameterName") 来获取。

        用事实说话,在上边我们创建的 FirstServlet中的 doget 方法中如下:

    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().append("\n初始化参数userName = " + getInitParameter("userName"));}
        然后工程上右键>Run As:
        
        Server选择之前创建的,Add该工程到服务器配置,finish。出现
        
        
        即说明运行成功了!
        在浏览器地址栏输入http://localhost:8080/ServletTest/Home/FirstServlet 回车,会看到:
        
        好了,初步成功了。如果你是个新手,肯定还有很多地方不知道为什么,比如请求地址为什么这样写?Servlet 的响应怎么返回的?为什么显示的中文成了乱码?没关系,万事都不是一蹴而就的,我们就像标题一样,一步一个脚印,仔仔细细来。限于篇幅,本以为一篇就能说完,没想到还是留下了不少的内容,我们下篇继续。
        由于本人水平有限,如有问题请不吝赐教。若对我的文章比较满意,请静待下一篇的到来,_程序猿大人_在此谢过。

【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(2-1)Servlet的使用相关推荐

  1. 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(2-2)Servlet的使用

    在上一篇 [一步一个脚印]Tomcat+MySQL为自己的APP打造服务器(2-1)Servlet 的使用 中我们只是简单的对 Servlet 要做的任务.在服务器中的地位有了一个大概的了解,完成了在 ...

  2. 【一步一个脚印】Tomcat+MySQL为自己的APP打造服务器(1)服务器环境搭建

    转载自:衷水木http://blog.csdn.net/a_running_wolf 做 Android 开发一年多了,虽然不敢说有多精通,但也相对熟悉.做久了就会发现 Android 在行外人眼中是 ...

  3. MySQL innosetup_jdk,tomcat,mysql,innosetup封装

    jdk,tomcat,mysql,innosetup封装 jdk,tomcat,mysql,inno setup打包 引用地址: http://www.cnblogs.com/xionghui/arc ...

  4. kubernetes管理mysql_kubernetes云平台管理实战:tomcat + mysql(十二)

    一.实验准备 1.文件结构与组成 [root@master tomcat_demo]# ls mysql-rc.yml mysql-svc.yml tomcat-rc.yml tomcat-svc.y ...

  5. JDK Tomcat MySQL一键安装

    文章目录 材料准备 免安装版JDK 免安装版Tomcat 免安装版MySQL 微软Visual C++运行库组件 打包工具Inno Setup 统一目录 创建所需文件(先创建好清楚整体流程) 整体结构 ...

  6. java技术+tomcat+mysql

    相信你已经看过之前的文章了,那么这一篇文章就很容易理解了.如果你的基础不太好,暂时理解不了也没关系,先保存下来,后面基础补一补在回过头来看看. Tomcat + MySQL ============= ...

  7. eft java_Ubuntu - Edgy Eft 下安装配置Java开发环境(JDK 6 + Eclipse WTP + Tomcat + MySQL)

    安装版本信息: Ubuntu 6.10 Edgy Eft Java 1.6.0, JDK 6 Eclipse 3.2.2 WTP all-in-one 1.5.3 Tomcat 5.5.20 MySQ ...

  8. Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决

    2019独角兽企业重金招聘Python工程师标准>>> Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决篇[zz] 关键字:Struts H ...

  9. Apache+php+tomcat+mysql整合手册

    Apache+Php+tomcat+mysql整合手册 Apache+Php+tomcat+mysql整合手册 一. 需要的安装包 httpd-2.0.52.tar.gz jakarta-tomcat ...

最新文章

  1. Python3 数字(Number)
  2. shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...
  3. 如何判断Linux load的值是否过高
  4. Sass学习之路(3)——Sass编译
  5. 360浏览器怎么收藏网页 360安全浏览器快速收藏网页方法简述
  6. isinstance()函数的应用
  7. android 组件大小,Android编程获取组件尺寸大小的方法
  8. 物联网时代商业模式将驱动商业策略的转变
  9. 基于PCA的ORL人脸库特征抽取
  10. js判断用户是第一次点击还是第二次点击
  11. Modbus协议简单总结
  12. 电脑如何防蹭网?使用防蹭网功能杜绝未知设备连接WiFi
  13. 蓝天保卫战之产品测试服务
  14. Linux开机启动、bashrc、定时任务
  15. python 分词 jieba
  16. seo优化:把百度放进数据库
  17. 【魔兽争霸3地图编辑】vJass 教程
  18. 6666端口,地址访问谷歌浏览器,火狐浏览器限制
  19. 兄弟俩畅游Tomcat城市的SpringMVC科技园区
  20. 独孤思维:每天半小时,收益100+,新赚钱项目

热门文章

  1. 图片重命名,命名方式为:文件夹名字 + _ 顺序 + .jpg
  2. 申请 AlphaSSL (Loovit.Net) 免费泛域名证书的那些坑
  3. 如何选择一个好的域名?自购域名必看
  4. linux7查看计划任务,CentOS7 计划任务
  5. 用vue做轮播图 关于require的用法
  6. SVD奇异值分解(标题重复率过高)
  7. SWT集成chromium
  8. Mac 定时自动发送邮件
  9. try、catch、finally详解
  10. 基于javaweb个人记账管理系统设计与实现(项目源码+论文+毕业设计任务书)