1、Servlet概念
a) Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
b) 功能:实现接收web浏览器或HTTP客服端的请求,并根据请求回应HTTP服务端的数据。
2、Servlet优势
a) 可以根据数据库数据动态生成web网页;
b) Servlet在web服务器的地址空间内执行,不需要单独创建进程;
c) Servlet为java程序,是独立于平台的;
d) Servlet安全性可信;
e) Servlet可以使用java类库的全部功能。可以通过sockets和RMI机制与applets、数据库或其他软件进行交互;
3、Servlet架构
4、Servlet执行过程
a) 通过服务端接收客户端请求;
b) 连接数据库,处理生成结果;
c) 通过服务端回应客户端请求;
5、Servlet使用的前提条件:要求导入Servlet架包(servlet-api.jar),在tomcat的lib文件夹中都有自带的Servlet架包,在开发工具总引入即可。
6、Eclipse / Servlet环境搭建
a) 下载安装Tomcat
b) 移动创建Web工程
c) Tomcat与eclipse建立关联
Window——Preferences——Server——Runtime Environments
d) 创建Servlet(注意使用前先加入Servlet架包,Tomcat中存在架包)
File——new——Servlet
d) 创建Servlet类文件继承HttpServlet
package com.ittx.web.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
System.out.println("init 初始化servlet方法>>>>>>>>");
}
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException{
System.out.println("doget 执行get方法>>>>>>");
}
protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException{
System.out.println("dopost 执行post方法>>>>>");
}
public void destory(){
System.out.println("destory 销毁servlet方法>>>>>");
}
}
e) web.XML配置Servlet
web-servlet
HelloServlet
com.ittx.web.servlet.HelloServlet
HelloServlet
/servlet/HelloServlet
hello2.html
hello.html
register.html
f) html文件中关联Servlet文件
hello
7、虚拟映射
虚拟映射,就是将应用程序目录映射成我们访问时的路径。
方法一:在Tomcat中的conf目录下的servlet.xml中进行配置;
例如:
servlet\DomeServlet"/>
该web应用的访问路径path是http://localhost:4530/hello,该目录并非真实存在,而是将docBase目录映射到该目录上,该目录则为虚拟目录映射。当访问path路径是,实际访问的是绝对路径,注意该方法要重启Tomcat;
方法二:在D:\apache-tomcat-8.5.12\conf\Catalina\localhost目录下直接创建.XML文件,例如命名为hello,则这个文件则为虚拟映射目录;例如:
该方法不用重启Tomcat,如果想要建设多级目录,文件名命名为:a#b#c.xml即可;如果web程序直接放在Root根目录下,则path路径为“”;
方法三:
将应用程序直接拷贝到wepapps下,tamcat会自动映射该目录;
8、Eclipse下Servlet实例演示代码:
相关代码:
package com.ittx.web.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
System.out.println("init 初始化servlet方法>>>>>>>>");
}
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException{
System.out.println("doget 执行get方法>>>>>>");
}
protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException{
System.out.println("dopost 执行post方法>>>>>");
}
public void destory(){
System.out.println("destory 销毁servlet方法>>>>>");
}
}
web-servlet
HelloServlet
com.ittx.web.servlet.HelloServlet
HelloServlet
/servlet/HelloServlet
hello2.html
hello.html
register.html
hello
执行结果:
2017-3-21 11:09:58 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Myelipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/Myelipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin/client;D:/Myelipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin;D:/Myelipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/lib/i386;F:\oracle\product\10.2.0\db_2\bin;F:\oracle\product\10.2.0\db_1\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\NVIDIA Corporation\PhysX\Common;F:\java\jdk\bin;F:\java\jre\bin;D:\Program Files\Java\jdk1.8.0_111\bin;D:\java\JDK\bin;D:\java\JRE\bin;C:\Program Files\TortoiseSVN\bin;F:\mysql\mysql-5.7.11-win32\bin;
2017-3-21 11:09:59 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-bio-8080"]
2017-3-21 11:09:59 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-bio-8009"]
2017-3-21 11:09:59 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 288 ms
2017-3-21 11:09:59 org.apache.catalina.core.StandardService startInternal
信息: Starting service Catalina
2017-3-21 11:09:59 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.64
2017-3-21 11:09:59 org.apache.tomcat.websocket.server.WsSci onStartup
信息: JSR 356 WebSocket (Java WebSocket 1.1) support is not available when running on Java 6. To suppress this message, run Tomcat on Java 7, remove the WebSocket JARs from $CATALINA_HOME/lib or add the WebSocket JARs to the tomcat.util.scan.DefaultJarScanner.jarsToSkip property in $CATALINA_BASE/conf/catalina.properties. Note that the deprecated Tomcat 7 WebSocket API will be available.
2017-3-21 11:09:59 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
2017-3-21 11:09:59 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
2017-3-21 11:09:59 org.apache.catalina.startup.Catalina start
信息: Server startup in 264 ms
init 初始化servlet方法>>>>>>>>
dopost 执行post方法>>>>>