2.2 项目总结之servlet重要知识点汇总


 一、表单提交get和post的区别

       (1)、从安全角度来说,get<post

         (2)、从提交内容来说,get<post,get一般不要大于2k,而post建议不要大于64k

       (3)、但从速度看,get>post

       (4)、get可以保存uri中的参数,利于保存。

二、servlet配置:一次注册,多次映射。实现了访问多个路径都会访问到同一个servlet。

三、servlet单例问题

       什么是单例问题:意思就是说servlet第一次被加载时会加载到内存(只加载一次)中,以后该实例对各个请求服务。

       因为servlet是单例,因此会出现线程安全问题,即多个用户访问的时候会出现线程不同步的问题。

原则:如果一个变量被多个用户共享,一定要加同步机制,synchronized(对象){     //同步代码}

如果一个变量不需要被共享,则直接在doget或dopost中加载即可。

四、需求:当用户成功登陆后,要将用户信息显示在登陆成功界面;

(1)、重定向传递数据:

     格式:response.sendRedirect("servlet的地址?参数名=参数值&参数名=参数值...");

    参数值是string,参数名应当使用字母组合。

     参数接受方式:String param = request.getParameter("参数名"),注意不是getAttribute();

(2)、使用session

      传:request.getSession.setAttribute("oginName",username);

      取:request.getSession.getAttribute("loginName");

(3)、使用java的static

       User user = new User();

       user.setName("lanpy");

五、编码问题

1、如若使用post方式,在post方法中加入代码  request.setCharacterEncoding("utf-8");

(当然前提你页面使用的也是utf-8编码)

2、get方法或是超链接出现乱码,处理方式是一样的

写一个编码方式处理类:

public class MyTools{

   public static String getNewString(String str){

   String newString="";

  try{

  newString = new String(str.getBytes("iso-8859-1),"utf-8");

}catch(Exception e){

  e.printStackTrace();

}

   return newString;

}

}

 

 


2.2 项目总结之servlet重要知识点汇总_第1张图片
 六、转发详解


2.2 项目总结之servlet重要知识点汇总_第2张图片
  

 request.setAttribute()只能在一次请求中有效,转发是不转到浏览器的,它只是在服务器上传递数据的,

转发和重定向的区别:

(1)、sendaRedirect()叫做重定向,而forword叫做转发

(2)、发生位置不一样,重定向发生在浏览器,而转发发生在web服务器

(3)、用法(路径格式)不一样

request.sendRequestDispatcher("/资源URL").forward(request,response)     ,即不用写项目工程名,直接写资源名。

response.sendRedirect("/web应用/资源URL");

(4)、能够去url的范围不一样:

sendRedirect 可以去外面URL(即其他工程或站点)

forWord只能是一个站点之内。

你可能感兴趣的:(servlet)