1、HTTP协议基础
HTTP(Hypertext Transfer Protocol, 超文本传输协议)
HTTP是以明文方式发送数据的
用于从WWW服务器传输超文本到本地浏览器的传输协议。
HTTP协议是以TCP/IP为基础的高层协议。
现在广泛使用的版本HTTP/1.1
2、PrintWriter
打印流 不会抛异常 自动flush 检查状态吗
3、GenericServlet和HttpServlet
GenericServlet和HttpServlet 没有实现service方法,只是抽象方法
HttpServlet 实现了service方法
4、Service方法
service(ServletRequest req, ServletResponse res) 从接口中带过来的 分发客户端请求到受保护的service方法中
service(HttpServletRequest req, HttpServletResponse resp) 具体到http协议的细节了,接收到了客户端请求,并把它们分发到doXXX方法中去
tomacat调用service(ServletRequest req, ServletResponse res)调用service(HttpServletRequest req, HttpServletResponse resp) 调用doXXX方法
servlet在响应客户端请求时,一般情况下都重写dopost和doget方法,也可以重写service方法,但不常用。
5、客户端表单和web.xml
表单<form action=/asdfasdf method=post/get> </form>
form表单中action的"/"表示的是http://127.0.0.1:8080/ 代表的是域名的访问路径,不包括web应用程序的名称
web.xml中url-pattern的"/"表示的是http://127.0.0.1:8080/目录/ 代表的是web应用程序的路径
做项目要仔细!
form表单中action字段,如果不是以http打头的,或不是以/打头的都是绝对路径。
如果是相对路径,如action=my/aaa.jsp 这样是不行的。除非在 web.xml的url-pattern修改<url-pattern>/my/my/aaa.jsp</url-pattern>
解决页面乱码问题:resp.setContentType("text/html;charset=gbk");在打印流获取之前设置编码
web.xml最后改
6、servlet生命周期
servlet生命周期,在servlet为客户端提供服务时,只有一个servlet对象。当用户第一次访问servlet(当第一个请求过来时),tomcat就会new 出servlet(实例).new完之后,调用init方法,而且init方法也只调用一次,然后以多线程的方式处理客户端请求,
调用service----调用service-----调用doget或dopost方法。
多线程:线程池。让线程跑起来,当第n请求来时,tomacat会从线程池分配处理第n个请求.每个线程访问的是同一个servlet对象。
destory:servlet退出服务的时候(web应用程序退出,web应用程序重新加载了) 调用destory
只有一个对象。
7、Servlet从上一页面取参数(一)
一般不要在servlet设置成员变量。
ServletConfig:代表servlet的配置信息;
this.getServletConfig.getServletName();得到servlet名称
this.getServletConfig.getInitParameter("name");得到<init-param>
四个问号:一个汉字一个问号
解决方法:
s=new String(s.getBytes("iso8859-1"),"GBK");
s=new String(s.getBytes("utf8"),"GBK");
循环取出所有参数
java.util.Enumeration params = this.getServletConfig()
.getInitParameterNames();
for (; params.hasMoreElements();) {
String name = params.nextElement().toString();
String value = this.getServletConfig().getInitParameter(name);
value = new String(value.getBytes("iso8859-1"),"GBK");
out.println(value);
}
tomcat 调用init(ServletConfig config)
public void init(ServletConfig config) throws ServletException{
this.config=config;
this.init();
}
我们覆盖的时候只覆盖init()方法就行了。
8、Get方式和post方式的乱码问题
取参数:request.getParameter("param1");
request.setCharacterEncoding("gbk");解决post方式提交内容的乱码,一定要写在存取第一个参数之前。因为一旦取第一个参数了,会把所有参数存到一个容器去。不要调用
response.setCharacterEncoding("gbk");
解决get方式提交的乱码:tomcat--->修改server.xml--URIEncoding="GBK"
9、Servlet从上一页面取参数(二)
通过一个名字取出多个值:第一种方法:
Enumeration paramNames=request.getParameterNames();取出所有INPUT的名字
while(paramNames.hasMoreElements())
{
String paramName=(String)paramNames.nextElement();
String paramValues=request.getParameterValues(paramName);
if(paramValues.length==1)
{
String paramValue=paramValues[0];
}
else
{
for(i=0;i<paramValues.length;i++)
{
}
}
}
第二种方法:
Map<String String[]> paramMap=request.getParameterMap();
Set<Map.Entry<String,String[]>> entries=paramMap.entrySet();
for(Iterator<Map.Entry<String,String[]>> it=entries.iterator();it.hasNext();){
Map.Entry<String,String[]> entry=it.next();
String paramName=entry.getKey();
String[] paramValues=entry.getValue();
if(paramValues.length==1)
{
String paramValue=paramValues[0];
if(paramValue.length()==0)
print(novalue);
else
print(paramValue)
}
else
{
for(i=0;i<paramValues.length;i++)
print(paramValues[i]);
}
}
10、Cookie 编程
http协议无连接性。www.sina.com.cn 回车 下载完网页后就断掉了。
基于核心的业务编程,不要使用cookie编程。
Cookie cookie=new Cookie("name","value");
response.addCookie(cookie);
cookie=new Cookie("name1","value1");
cookie.setMaxAge(3600);
response.addCookie(cookie);
cookie[] cookies=request.getCookies();
if(cookies!=null){
Cookie cookie;
for(int i=0;i<cookies.length;i++)
{
cookie=cookies[i];
cookie.getName();
cookie.getValue();
}
}
cookie的特点:
1、服务器可以向客户端写内容;
2、只能是文本内容; 长度不能超过4K
3、客户端可以阻止服务器写入;
4、只能拿自己webapp写入的东西
5、Cookie分为两种
属于窗口/子窗口(放在内存中)
属于文本(有生命周期的)
6、一个servlet/jsp设置的cookies 能够被同一个路径下面或者子路径下面的servlet/jsp读到(路径=URL)
(路径!=真实文件路径)
父路径:http://127.0.0.1/my/SetCookies
子路径:http://127.0.0.1/my/servlet/ShowCookies
11、Session 编程
session对象是写在服务器端,大小无限制。
HttpSession session=request.getSession(true);
Integer accessCount = (Integer)session.getAttribute("accessCount");
session.setAttribute("accessCount",accessCount);
session.getId();
new Date(session.getCreationTime());
new Date(session.getLastAccessedTime());
有父子关系的都是一个session
session.isNew();
request.getRequestedSessionId();从客户端取回来的id号
request.isRequestedSessionIdFromCookie();
request.isRequestedSessionIdFromURL();
request.isRequestedSessionIdValid();是不是合法的有效的sessionid;
response.encodeURL(request.getRequestURL().toString());URL重写
request.getRequestURL().toString();
session总结
1、服务器的一块内存(存key-value)
2、配置过期时间:conf/web.xml <session-config>
3、和客户端窗口对应(子窗口)(独一无二)
4、客户端和服务器都有对应的SessioID
5、客户端向服务器端发送SessionID的时候两种方式:
1、cookie(内存cookie)
2 重写URL
6、浏览器禁掉cookie,就不能使用session(使用cookie实现的session)
7、如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户打开cookie打卡
12、Application编程
ServletContext application=this.getServletContext(); 我们写的servlet和tomcat打交道。
Integer accessCount=(Integer)application.getAttribute("accesscount");
application.setAttribute();
比session更大的篮子。
访问同一个web应用程序上的各种servlet,无论是不是同一session都会访问servletContext对象,都会访问这个篮子。
<!--EndFragment-->
分享到:
相关推荐
### JSP & Servlet知识点总结 #### 一、Web概述与工作原理 - **Web定义**:Web是指一种基于浏览器和服务器交互的技术体系,它通过有线(如家庭宽带)或无线(如Wi-Fi)网络连接客户端(通常是浏览器)与服务器端,...
jsp&servlet知识点总结.doc
【JSP和Servlet知识点详解】 一、JSP与Servlet的区别 1. **本质与生成**:JSP(Java Server Pages)本质上是Servlet的一种简化形式,它将HTML代码和Java代码结合在一起,经过Web容器(如Tomcat)的处理,被编译成...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
**Jsp及Servlet知识点总结**: - JSP与Servlet的定义、工作原理 - JSP的组成部分及核心元素 - Servlet的生命周期、部署描述符 - JSP EL和JSTL的应用 - JSP与Servlet在MVC模式中的角色 - 源码学习与开发工具的使用 ...
servlet总结 都是基础和重要的知识点 大学软件专业的上课资料 想巩固基础知识请进
Web学习知识点总结涵盖了Web工作原理、HTTP协议、Web服务器缺陷及解决方案、Web应用程序的组成、Servlet等内容,这对于理解和掌握Web开发至关重要。 首先,HTTP(超文本传输协议)是Web通信的基础,它定义了客户端...
这是一个关于servlet的说明很全的一个文档,总结了servlet的用法,出现的问题,关于将jsp与servlet的应用相结合的用法
这份名为"知识点总结word.zip"的压缩包文件,很可能包含了一份精心整理的Java技术学习指南,帮助我们系统地理解和掌握这个强大的编程语言。下面,我们将详细探讨Java的核心概念和技术点,希望能为你的学习之路提供...
以下是对Servlet和JSP知识点的详细归纳: **Servlet** 1. **Servlet概念**:Servlet是Java编写的小型服务器端程序,运行在Web服务器上,用于处理客户端请求并返回响应。 2. **生命周期**:Servlet的生命周期包括...
以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...
以下是对JavaWeb知识点的详细总结: 1. **Servlet**: Servlet是Java Web应用的基础,它是Java编写的应用程序,用于扩展服务器的功能。通过实现Servlet接口或继承HttpServlet类,我们可以处理HTTP请求并生成响应。 ...
自己总结的一些Servlet知识点!希望对大家有用!
以下是对给定文件中提到的知识点的详细解释: 1. **表格颜色交替**:在HTML中,可以通过JavaScript来实现表格行的颜色交替。示例代码通过获取表格的所有行,然后根据行号计算出颜色变化的规律,将偶数行设置为红色...