目录
Servlet
简介:
-
底层是TCP/IP 传输数据和逻辑处理就直接servlet解决了
-
服务器也是个软件
-
互联网最底层的协议是TCP/IP
-
servlet接收客户端的请求 连接数据库 如果有返回 再从数据库返回到客户端(使用打印流或者jsp)
-
servlet运行需要服务器
-
继承HttpServlet抽象类时:service()方法可以接受客户端的请求并响应客户端
-
web项目的jar包不能直接用 放在WebContent下的Web-inf》lib文件夹下即可
-
地址栏直接请求就是get请求
- 什么是Servlet ?
- Servlet 是JAVAEE WEB 开发的规范。----API(提供了一些方法)
- Servlet 运行需要服务器支撑.Servlet (Server Applet) 是 Java Servlet的简称,服务程序与服务连接器,用java编程的服务器端的程序.
- 作用: 用于交互浏览器(客户端)与服务器的生成动态的web内容(网页).
- 担当客户端请求与服务器响应的中间件(层)
注:servlet本质上就是一个多线程的类
注:servlet可以跳转servlet
servlet生命周期
分为如下阶段:
<1>实例化: 第一次请求的时候,实例化servlet对象的(第一次在浏览器打开这个网址的时候)
<2>init()初始化: 获取servlet初始化配置参数信息. 只执行一次.
<3>处理service/doget/dopost 反复地去执行的,
<4>销毁: 服务器/tomcat 停止
注意: 一旦servlet 实例化了,长期驻留在内存中,只要服务器停止,此对象才会销毁.
Servlet加载顺序
- 在项目web.XML文件中设置<load-on-startup>1</load-on-startup>
注:它的值必须是一个整数,表示servlet 被加载的先后顺序,(先加载值小的)
如果值为正整数或者0时,表示容器在应用启动时就加载servlet并初始化这个servlet, 值越小,servlet的优先级越高,就越先被加载,值相同,容器就会自己选择顺序加载.
例子:设置之后 只要启动服务器就会实例化这个servlet(构造方法和init方法)
<servlet>
<description>生命周期</description>
<display-name>TestServlet</display-name>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.iotek.servlet.LifeServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
动态web项目下web.xml文件
-
mapping下面的url-pattern就是浏览器url上面输入的一部分(路径必须有(/)表示根目录)
当请求url-pattern的时候 根据名字找到对应的servlet名字 然后匹配下面的类
找到这个类自动运行类里面的servie()方法
-
servlet-mapping里面 servlet-name必须跟 servelt里面的name一样
-
理论上可以有多个servlet 多个servlet-mapping 一一对应
大致普通代码:
<servlet>
<description></description>
<display-name>TestServletConfig</display-name>
<servlet-name>TestServletConfig</servlet-name>
<servlet-class>com.iotek.servlet.TestServletConfig</servlet-class>
//下面传的参数是使用init方法里面的config对象获取的
<init-param>
<param-name>user</param-name>
<param-value>yangmiao</param-value>
</init-param>
<init-param>
<param-name>user1</param-name>
<param-value>zhaojie</param-value>
</init-param>
//启动服务器的时候就创建这个Servlet对象
//值越小就先启动 最小是0
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>TestServletConfig</servlet-name>
<url-pattern>/config.do</url-pattern>
</servlet-mapping>
<error-page>
//错误代码
<error-code>404</error-code>
//错误之后跳转页面 写上路径
<location>error.html</location>
</error-page>
//每一种错误写一对
<error-page>
//错误代码
<error-code>500</error-code>
//错误之后跳转页面 写上路径
<location>error1.html</location>
</error-page>
<error-page>
//不写错误代码 不是上面两种就会跳转到这个页面
<location>error2.html</location>
</error-page>
//设置session失效时间
<session-config>
<session-timeout>30</session-timeout> 默认30分钟
</session-config>
注:有很多标签,有时间慢慢学吧
Servlet执行顺序:(构造、初始化、处理、销毁)
public class LifeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LifeServlet() {
System.out.println("构造方法");
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init 初始化");
}
public void destroy() {
System.out.println("destroy 销毁");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("处理");
}
}
Tomcat
-
tomkat版本跟jdk版本尽量一致
-
shutdown.bat是关闭tomcat程序
-
conf目录下面有个server文件 里面可以修改端口号之类的信息
-
lib:websocket.jar包 是解决传输数据的
- eclipse集成之后 使用的 .metadata里面的 server c什么文件夹里面的(但是我修改了路径,项目都在Tomcat根路径下的wtpwebapps文件夹)
-
eclipse上面出现的服务器(server)文件夹里面的东西 相当于Tomcat程序目录里conf目录里的东西,集成之后就不能按照原来的样子测试了
目录下各文件夹的用途:
-
Bin目录:存放tomcat 应用程序.
-
启动tomcat 软件
浏览器输入http://localhost:8080/ 出现cat页面表示服务器启动成功.
-
Conf目录: 存放服务器相关的配置,比如修改端口号:
-
Lib 目录: 存放tomcat应用程序自身的jar包.—servlet api
-
Logs目录 存放服务器相关的日志信息.(可以在里面看到服务器出现的异常之类的)
-
Temp 目录:存放临时文件(上传)
-
Webapps目录: 部署项目(一个项目开发好部署在这里) 我的eclipse项目文件就在这
-
Work 目录 : 工作目录.class文件。