`

servlet知识点总结

阅读更多

1HTTP协议基础

  HTTP(Hypertext Transfer Protocol, 超文本传输协议

  HTTP是以明文方式发送数据的 

  用于从WWW服务器传输超文本到本地浏览器的传输协议。

  HTTP协议是以TCP/IP为基础的高层协议。

  现在广泛使用的版本HTTP/1.1 

2PrintWriter  

    打印流 不会抛异常  自动flush     检查状态吗

3GenericServletHttpServlet

GenericServletHttpServlet 没有实现service方法,只是抽象方法    

HttpServlet 实现了service方法

4Service方法

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在响应客户端请求时,一般情况下都重写dopostdoget方法,也可以重写service方法,但不常用。

5、客户端表单和web.xml

表单<form action=/asdfasdf method=post/get> </form>

form表单中action"/"表示的是http://127.0.0.1:8080/            代表的是域名的访问路径,不包括web应用程序的名称

web.xmlurl-pattern"/"表示的是http://127.0.0.1:8080/目录/   代表的是web应用程序的路径

做项目要仔细!

form表单中action字段,如果不是以http打头的,或不是以/打头的都是绝对路径。

                       如果是相对路径,action=my/aaa.jsp 这样是不行的。除非在  web.xmlurl-pattern修改<url-pattern>/my/my/aaa.jsp</url-pattern>

解决页面乱码问题:resp.setContentType("text/html;charset=gbk");在打印流获取之前设置编码

web.xml最后改

6servlet生命周期

servlet生命周期,在servlet为客户端提供服务时,只有一个servlet对象。当用户第一次访问servlet(当第一个请求过来时),tomcat就会new servlet(实例).new完之后,调用init方法,而且init方法也只调用一次,然后以多线程的方式处理客户端请求,

调用service----调用service-----调用dogetdopost方法。

多线程:线程池。让线程跑起来,当第n请求来时,tomacat会从线程池分配处理第n个请求.每个线程访问的是同一个servlet对象。

destory:servlet退出服务的时候(web应用程序退出,web应用程序重新加载了) 调用destory

只有一个对象。

7Servlet从上一页面取参数(一)

一般不要在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()方法就行了。

8Get方式和post方式的乱码问题

取参数:request.getParameter("param1");

request.setCharacterEncoding("gbk");解决post方式提交内容的乱码,一定要写在存取第一个参数之前。因为一旦取第一个参数了,会把所有参数存到一个容器去。不要调用

response.setCharacterEncoding("gbk");

解决get方式提交的乱码:tomcat--->修改server.xml--URIEncoding="GBK"

9Servlet从上一页面取参数(二)

通过一个名字取出多个值:第一种方法:

                      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]); 

                          }

                 }

10Cookie 编程

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写入的东西

   5Cookie分为两种

       属于窗口/子窗口(放在内存中)

       属于文本(有生命周期的)

   6、一个servlet/jsp设置的cookies 能够被同一个路径下面或者子路径下面的servlet/jsp读到(路径=URL)

       (路径!=真实文件路径)

         父路径:http://127.0.0.1/my/SetCookies

         子路径:http://127.0.0.1/my/servlet/ShowCookies

11Session 编程

    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的时候两种方式:

        1cookie(内存cookie) 

        2 重写URL

    6、浏览器禁掉cookie,就不能使用session(使用cookie实现的session)

    7、如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户打开cookie打卡

12Application编程

ServletContext application=this.getServletContext(); 我们写的servlettomcat打交道。

Integer accessCount=(Integer)application.getAttribute("accesscount");

application.setAttribute();

session更大的篮子。

访问同一个web应用程序上的各种servlet,无论是不是同一session都会访问servletContext对象,都会访问这个篮子。

<!--EndFragment-->
分享到:
评论

相关推荐

    jsp&servlet知识点总结

    ### JSP & Servlet知识点总结 #### 一、Web概述与工作原理 - **Web定义**:Web是指一种基于浏览器和服务器交互的技术体系,它通过有线(如家庭宽带)或无线(如Wi-Fi)网络连接客户端(通常是浏览器)与服务器端,...

    jsp&servlet知识点总结.doc

    jsp&servlet知识点总结.doc

    jsp和servlet知识点总结

    【JSP和Servlet知识点详解】 一、JSP与Servlet的区别 1. **本质与生成**:JSP(Java Server Pages)本质上是Servlet的一种简化形式,它将HTML代码和Java代码结合在一起,经过Web容器(如Tomcat)的处理,被编译成...

    Servlet基础知识总结

    ### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...

    Jsp及Servlet

    **Jsp及Servlet知识点总结**: - JSP与Servlet的定义、工作原理 - JSP的组成部分及核心元素 - Servlet的生命周期、部署描述符 - JSP EL和JSTL的应用 - JSP与Servlet在MVC模式中的角色 - 源码学习与开发工具的使用 ...

    servlet总结的基础和重要的知识点

    servlet总结 都是基础和重要的知识点 大学软件专业的上课资料 想巩固基础知识请进

    servlet笔记,servlet的总结

    ### Servlet核心知识点详解 #### 一、Servlet简介与工作原理 Servlet是一种运行在服务器端的Java应用程序,专门用于处理客户端的HTTP请求并生成响应。它作为Web应用的重要组成部分,能够提供动态网页服务,实现了...

    Web学习知识点总结

    Web学习知识点总结涵盖了Web工作原理、HTTP协议、Web服务器缺陷及解决方案、Web应用程序的组成、Servlet等内容,这对于理解和掌握Web开发至关重要。 首先,HTTP(超文本传输协议)是Web通信的基础,它定义了客户端...

    知识点总结word.zip

    这份名为"知识点总结word.zip"的压缩包文件,很可能包含了一份精心整理的Java技术学习指南,帮助我们系统地理解和掌握这个强大的编程语言。下面,我们将详细探讨Java的核心概念和技术点,希望能为你的学习之路提供...

    Servlet&JSP知识点归纳思维导图

    以下是对Servlet和JSP知识点的详细归纳: **Servlet** 1. **Servlet概念**:Servlet是Java编写的小型服务器端程序,运行在Web服务器上,用于处理客户端请求并返回响应。 2. **生命周期**:Servlet的生命周期包括...

    Struts2知识点总结

    以下是对Struts2知识点的详细总结: 1. **Struts2核心组件** - **FilterDispatcher**(或现在的`StrutsPrepareAndExecuteFilter`):这是Struts2的核心过滤器,它负责拦截请求,处理Action映射,并转发到相应的...

    javaWeb知识点总结

    以下是对JavaWeb知识点的详细总结: 1. **Servlet**: Servlet是Java Web应用的基础,它是Java编写的应用程序,用于扩展服务器的功能。通过实现Servlet接口或继承HttpServlet类,我们可以处理HTTP请求并生成响应。 ...

    servlet小结

    自己总结的一些Servlet知识点!希望对大家有用!

    面试知识点总结--JSP与Servlet.pdf

    以下是对给定文件中提到的知识点的详细解释: 1. **表格颜色交替**:在HTML中,可以通过JavaScript来实现表格行的颜色交替。示例代码通过获取表格的所有行,然后根据行号计算出颜色变化的规律,将偶数行设置为红色...

Global site tag (gtag.js) - Google Analytics