`

Servlet知识总结

    博客分类:
  • J2EE
阅读更多

1.什么是Servlet?

Servlet是运行在Web服务器和应用服务器上的Java程序。它是一个中间层,负责连接来自Web浏览器或其他HTTP客户请求和HTTP服务器上的数据或应用程序。

 

2.Servlet和JSP的区别?

简单的说就是,Servlet是含有HTML的Java程序,JSP是含有Java代码的HTML页面。一般来来说,Servlet侧重于逻辑处理,JSP侧重于显示

 

3.Servlet的基本结构

public class ServletName extends HttpServlet { 

public void doPost(HttpServletRequest request,HttpServletResponse  response) throws ServletException, IOException { 
} 
public void doGet(HttpServletRequest request, HttpServletResponse  response) throws ServletException, IOException { 
} 
    }

4.Servlet的生命周期:

     服务器只创建一个Servlet的单一实例,每一个请求都会引发新的线程,只有第一次访问Servlet才会实例化Servlet。其生命周期如下

突例化(new) --> 初始化(init) --> services(doGet,doPost....) --> 销毁(destory)

 

    Servlet初始化有两种类型

       1)常规初始化,只是创建或载入在Servlet生命周期内用到的一些数据或执行一次计算;

       2)初始化参数控制的初始化,依懒web.xml中提供的初始化参数

 

5.Servlet获取表单数据:

       单个值的获取:request.getParameters,如果参数存在但没有相应的值,返回空的String;如要参数不存在,则返回null;

       多个值的获取:request.getParamenterValues,存在返回一个数组,不存在返回null;

参数名的查找:request.getParamenterNames和request.getParameterMap。

 

6.Cookie的管理:

    Cookie发送的三个步骤:1)创建Cookie;2)设置最大时效 3)将Cookie放到HTTP响应头

    Cookie的读取:1)request.getCookieS 2)循环Cookie数组

    示例:

      发送

      //新建

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

 

 

7.Session管理 

 session对象是写在服务器端,大小无限制

 

  1)服务器的一块内存(key-value)

   2)配置过期时间:conf/web.xml <session-config>

   3)和客户端窗口对应(子窗口)(独一无二)

   4)客户端和服务器都有对应的SessioID

   5)客户端向服务器端发送SessionID的时候两种方式:cookie(内存cookie)和 重写URL

 

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

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

 

 示例

 

  HttpSession session=request.getSession(true);
  Integer accessCount = (Integer)session.getAttribute("accessCount");
  session.setAttribute("accessCount",accessCount);
 

 

 

Application管理

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

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

 

 

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

  application.setAttribute();

 

9.中文乱码处理:

乱码的主要原因:整个处理过程中编码不一致。

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

 

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

 

response.setCharacterEncoding("gbk");

 

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

 

 

 

参考:http://fushengfei.iteye.com/blog/783390

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics