个人理解servlet是一个小的Java运行程序,其作用是接收和响应用户的请求,其运行主要是在Web服务器中加载,运行在Web服务器内部,其即不能独立运行也不是线程。
概念:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请湂(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间幂。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet中的相关名称:
Web服务器 Web服务器,即Web Server,是Web(互联网)上的一台或多台机器。这些机器上部署了 绻统软件以及需要在网络中共享的信息。客户端可以通过HTTP协议访问部署到服务器上的 资源。
应用服务器 应用服务器,即Application Server,是网络上的一台或多台机器。这些机器上部署了 绻统软件用以为客户端及其它的服务器比如Web服务器提供数据服务、业务处理服务等。 常见的应用服务器包括文件服务器、打印服务器以及运行着EJB组件的EJB服务器等。
Servlet容器 Servlet容器,即Servlet Container,是Web服务器或应用服务器的组成部分,它可以 为Servlet提供请湂和响应的服务,同时也负责管理Servlet的生命周期。Servlet容器也 可以为Servlet提供其它的服务,比如资源服务、安全服务、线程的服务等。Servlet容器 即可以集成到Web服务器或应用服务器中,也可以作为独立的程序嵌入到Web服务器或应用 服务器中。
Servlet作用
Servlet规范通过规定一个编程的框架来达到扩幕服务器功能的目的,采用请湂-响应模式提供基于Web的服务。当客户机发送请湂至服务器时,服务器帆请湂信息转发给Servlet,Servlet处理请湂并生成响应内容并帆其传给Web服务器,然后再由Web服务器帆响应返回给客户端。
流程如下面的图片所示:
上面的图可以理解为下图:
用Tomcat服务器为例:在其下文件夹webapps目录下面的ser-app中,/login.html和basic/time为该应用下的资源路径,该路径为虚拟路径,有服务器把其映射成系统的文件或程序,其流程如下图所示:
注:在运行之前要将Java的环境变量给配置好,不然Tomcat将不能正常的运行。
为了熟悉练习,在myeclipse中创建工程时直接创建的Java工程而不是直接创建的Web工程,因为Web工程在创建的时候系统已经给我们把相关的文件都创建好了,对于刚学的我们来说不知道其意思,故就用Java工程来创建,创建好工程后要创建相关的文件,对其意思进行了解。
完成后的工程结构目录如下:
在WEB-INF文件夹下创建classes文件夹已方便把编译的class文件放在此文件夹下,后面的应用时方便使用。并把编译的class路径改为此文件夹下,如下图所示:
当然由于刚学,只是用来进行一个简单的网站跳转,其代码如下:
<span style="font-size:18px;">package com.sc.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("FirstServlet>>>>>>草你妹>>>>>>"); resp.sendRedirect("http://blog.csdn.net/q394895302");//此处为跳转网站的网址 } } </span>
web.xml内容如下所示:
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>FirstServlet</servlet-name> <!-- servlet-class为java程序的根路径,和在Android 中注册一样 --> <servlet-class>com.sc.servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <!-- servlet-name中的内容必须相同,自己定义 --> <servlet-name>FirstServlet</servlet-name> <!-- /caonima为登陆网站的路径 --> <url-pattern>/caonima</url-pattern> </servlet-mapping> </web-app></span>
在Tomcat中文件夹内容如下所示:
将上面的WebRoot文件夹复制到上图的webapps文件夹下,其效果如下图所示:
启动Tomcat,其启动如下图所示:
启动后运行打开网站输入要运行的网址,如下图所示:
注:上面192.168.1.153为本机的IP也可以输入localhost代替;8080为默认的端口号,可在conf文件夹下的server.xml中的Connector中port更改端口号,如下图:
端口号后面的就是我们定义的路径。这样就可以跳转的相应的界面,Tomcat中会打印出输出值如下:
根据个人运行遇到的问题及处理得出: 如果不能运行或跳转界面,就删除缓存文件,再重新复制WebRoot到指定位置,重启Tomcat,基本就能解决问题。以上的文件内容最好是手动输入,这样更容易避免出错的概率。若还是不能解决那就百度......