servlet的生命周期、解决乱码的方式和get方式提交与post方式提交的区别 学习笔记

来源:互联网 发布:合并数组js,不要重复的 编辑:程序博客网 时间:2024/05/16 18:49
servlet


# servlet的生命周期
@ servlet的生命周期,是由服务器的web容器来进行负责。当web容器加载servlet实例,调用
servlet中的init方法。直到servlet容器销毁,调用destory()方法,将servlet进行
销毁的动作。在这个两个方法调用的期间,会调用service()方法,来处理浏览器发送的过来的请求

@ 在servlet的一个生命周期中,它的init()与destory()方法只会执行一次。但是处理
请求的servcie(doGet/doPost)方法会执行多次,因为在一个servlet生命周期中,浏览器端
可以发送多个请求,也就说明了一个servlet实例可以处理多次请求


# servlet的getInfo方法
@ 这个方法基本上没用。这个方法的作用就是获取servlet的一些描述性的信息

# server的getServletConfig方法
@ 使用这个方法可以获取当前servlet的的ServletConfig对象(某一个Servlet实例的配置信息对象)。
通过这个对象可以获取Servlet配置的初始化参数,这些初始化参数配置在web.xml文件中
例如:
<servlet>
<servlet-name>别名</servlet-name>
<servlet-class>具体的Servlet的路径(包名.类名)</servlet-class>
<!--配置servlet的初始化参数-->
<init-param>
<param-name>参数的key值</param-name>
<param-value>参数的value值</param-value>
</init-param>
</servler>


@ 在一个Servlet的配置中,可以配置多个参数

# Servlet的加载的优先级
@ 在Servlet配置信息中,如果不对加载的优先级进行配置,那么Servlet会有一个默认的加载
优先级。默认的优先级为:当有请求,请求道这个Servlet的时候,这个Servlet才会被web容器
进行初始化并加载

@ 设置Servlet的加载优先级
* 在web.xml文件中的servlet标签节点中配置load-on-startup标签,在标签中
设置优先级别的值(int类型)
例如:
<servlet>
<servlet-name>别名</servlet-name>
<servlet-class>具体的Servlet的路径(包名.类名)</servlet-class>
<!--配置Servlet的加载的优先级-->
<load-on-startup>1</load-on-startup>
</servler>
设置了Servlet的加载优先级,那么在web容器初始化的时候,会初始化Servlet的实例,并且
加载的web容器中

# Servlet的线程安全问题(了解)
@ Servlet本身已经实现了多线程,当有具体的用户请求访问Servlet。都会新开启一个Thread。
@ 在Servlet中的成员变量,如果发生了并发,那么这个成员变量就要考虑线程的安全问题。要想
解决成员变量的线程安全问题,就要在使用的方法中使用同步代码块
例如:
synchronzied(this){
//使用Servlet中定义的成员变量
}

# get方式提交与post方式提交的区别?

@ 地址栏变化
* get方式提交地址栏会发生变化(浏览器有关)
* post放肆提交地址栏没有变化


# HttpServletRequest 
@ 负责请求的对象,俗称为request对象。通过这个对象可以获取请求的一些参数
@ 主要的方法有:
* getParameter("key") ;//获取一个参数
* getParameterValues("key") ; //获取一个参数的多个值

# 解决乱码的方式:
@ post方式解决乱码
* 通过request设置请求体中的编码方式,request.setCharacterEncoding(编码的格式) ;
@ get方式
* 在tomcat中的server.xml文件中的<connector>标签添加URIEncoding属性。进行设置get方式提交的编码

get/post方式可以通过使用重新构建字符串的形式进行转码,格式如下:
String str = new String("要转码的字符串".getBytes(获取编码的方式),需要转的编码格式) ;
例如:
String str = new String(str.getBytes("iso8859-1"),"UTF-8") ;

注:乱码的问题在以后的开发中经常出现。主要要保证编码所到之处编码格式一致


常见的编码格式有:
iso8859-1:一般情况下默认的编码格式
以下是支持中文的编码格式:
GBK
GB2312
GB18030
UTF-8

# http请求写协由三部分组成,如下:
@ 请求行:位于Http请求的第一行
@ 请求头:位于请求行下,请求体之上,但是与请求体具有一个空白行来区分请求头与请求体的区别
@ 请求体:只有post请求方式中才有请求体,get方式请求没有请求体




# 服务器端程序与浏览器之间的转向


@ 使用HttpServletResponse对象页面之间的转向。response对象调用sendredirect("html的url") ;





























0 0