servlet学习笔记
来源:互联网 发布:软件开发售后服务 编辑:程序博客网 时间:2024/05/21 12:41
1、servlet(服务器端编程)而脚本程序运行在客户端(浏览器端)
2、常见的web服务器
iis apache tomcat(免费的最好用的) jboss weblogic
3、动态网页技术
cgi asp php(lamp 免费 linux+apache+mysql+php) jsp
4、区分 web服务器 应用服务器 jsp/servlet容器
web服务器 apache(静态页面)
应用服务器 iis(应用程序可以运行)
jsp/servlet容器tomcat(运行jsp servlet)
tomcat下载
windows下使用 start.bat shutdown.bat
5、需要修改的地方
配置tomcat context reloadable=true userconfig
(config server.xml user.xml)
6、http协议(超文本传输协议) 以明文方式发送数据 不安全的方式 安全使用https协议
用于从www服务器传输超文本到本地浏览器的传输协议
http协议是以tcp/ip为基础的高层协议
现在广泛使用http1.1
7、servlet
servlet是服务器端运行的程序
用于完成b/s架构下客户端请求的响应处理
常见的servlet容器tomcat jetty
8、webapp的概念web application
满足sun的java web application在项目文件夹下必须存在:WEB-INF文件夹web.xml+classes文件夹+lib文件夹(注意大小写 )
继承httpservlet 重写doget() dopost()方法
web.xml里面配置servlet classes文件夹下
防止servlet编译好的class文件urlmapping对应的相对地址,相对于项目根路径
response.getWriter();
地址栏中敲的时候分大小写(tomcat)weblogic貌似不区分大小写
路径问题
servlet生命周期
加载 classloader --实例化new --初始化init --处理请求doget dopost-- 退出服务destory
整个过程在服务器端只存在一个servlet对象
第一次客户端请求的时候new一个servlet对象 后调用init方法初始化(也是只调用这一次) 以后调用service方法即doget dopost直到退出,或者重新加载时调用destory方法销毁servlet对象 关闭资源
tomcat中有一个线程池 里面存在很多线程对象,客户端请求时会分配一个线程去调用那个唯一的servlet对象的service方法
下例展示servlet生命周期
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServletLifeCycle extends HttpServlet {
/**
* Constructor of the object.
*/
public TestServletLifeCycle() {
System.out.println("Constructor");
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
System.out.println("destroy");
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service");
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
System.out.println("init");
}
}
每次刷新都只会调用service方法(体现多线程)只有重新加载或者关闭才调用destory
servlet有两个init方法
一个带参数 一个不带参数
带参数servletconfig的主要是在web.xml中添加init-param
<form action="ThreeParams" method="post">
9、cookie
http协议是无连接的协议
服务器端可以向客户端写内容 但是内容必须是文本内容,长度有限,客户端可以阻止服务器端的写入
cookie分为两种 属于窗口/子窗口,存在于内存中,窗口一旦关闭就消失,不设置生命周期
属于文本的 存在于文本中即cookie文件夹中 需要设置生命周期,即使窗口关闭若没有到周期还能访问
一个servlet/jsp设置的cookie能够被同一个路径下面或者子路径下面的servlet/jsp读到
路径=url 路径!=真实文件路径
设置cookie
Cookie cookie = new Cookie("Session-cookie-"+i, "cookie-value-s"+i);
response.addCookie(cookie);
cookie = new Cookie("P-cookie-"+i, "cookie-value-s"+i);
cookie.setMaxAge(3600);
response.addCookie(cookie);
获取cookie
Cookie [] cookies = request.getCookies();
for(int i=0;i<cookies.length;i++) {
out.println((String)cookies[i].getName());
out.println((String)cookies[i].getValue());
}
session 解决http协议的无连接性
cookie采用的策略是服务器端向客户端写入cookie 但是客户端可以禁用cookie
因此采用session编程
服务器端创建session 并且把sessionid通过cookie记录到客户端cookie里 同事服务器端也有一个sessionid
session不同于cookie 不存在路径问题,只要是同一个窗口就可以访问到同一个session对象,
cookie被禁用后sessionid无法写入cookie服务器端只能每次新建一个新的session对象,为解决此问题可以采用url重写的方法
response.encodURL(request.getRequestURL.toString())这样在禁用cookie之后可以在url后面加上没有写到cookie的sessionid
session是服务器端的一小块内存 与客户端的窗口对应 客户端和服务器有对应的sessionid
客户端向服务器端发送sessionid的时候有两种方式cookie(内存cookie)
重写url response.encodURL(request.getRequestURL.toString())
如果禁用cookie就不能使用依赖cookie的session 如果想安全使用session,不论是否禁用cookie只能采用url重写的方式增加编码负担,因此很多网站要求打开cookie
servletcontext servlet上下文 servlet不能单独运行必须放到容器中才能运行
servlet与tomcat是怎么打交道的呢? 是通过servletcontext
- Servlet学习笔记 Servlet原理
- 《Servlet学习笔记》Servlet 简介
- Servlet学习笔记
- servlet学习笔记
- Java Servlet学习笔记
- Servlet学习笔记
- servlet 学习笔记(1)
- servlet 学习笔记(2)
- Servlet学习笔记
- Servlet学习笔记
- JSP/Servlet学习笔记
- servlet学习笔记
- Servlet学习笔记
- SERVLET学习笔记
- servlet学习笔记
- Servlet 学习笔记
- servlet学习笔记
- servlet学习笔记
- 全文检索学习
- log4j的典型配置文件
- windows 2003 右键共享与安全不见了
- 用JavaScript编写COM组件的步骤
- 象研究机器零件一样研究软件功能
- servlet学习笔记
- NOD32企业内部更新服务器搭建
- SIM卡数字的含义
- 今天是一个新的开始
- 关于中英文乱码的问题详细解析
- 访问IIS元数据库失败 解决
- 嘟嘟会走了
- ACPI_BIOS_USING_OS_MEMORY
- 再谈quartz