head first servlets and jsp 笔记2

get和post的区别

1:请求数据的大小不同。
因为get请求的数据是要追加到URL中,而URL的数据量一般不能超过2K,所以用get请求的方法对数据的大小有限制。而post请求方法是把数据放在消息体中,所以理论上对数据量没有限制。(但是实际操作中也不能能太大)
2:安全性不一样
因为get请求的数据是追加在URL中,外部用户能很方便的看到,从这个角度上来讲不安全。而post方法因为是讲请求放在消息体中,不会直接在URL中显示所以从这个角度来说数据会比较安全。
3:书签建立
get请求可以建立书签;post请求则不能。例如:假设你有一个页面允许用户指定搜索规则。用户可能一个星期之后才回来,想要得到原来的数据,但此时服务器上已经有新的数据了。
4:方法的使用
get用于得到某些东西,只是简单的获取,不会对服务器做任何的改变。post则用于发送数据来进行处理,看作是一个更新,来修改服务器上的数据。

 

ServletConfig

在Servlet 的配置文件中,可以用一个或多个<init-param>标签为servlet配置一些初始化参数。

当servlet配置了初始化参数之后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给Servlet。进而,程序员通过Servlet对象得到当前servlet的初始化参数信息。

 

ServletContext

1.多个Servlet通过ServletContext对象实现数据共享。

如:

在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据

ServletContext context = this.getServletContext();   /*获取ServletContext对象*/  

context.setAttribute("name", "haha");                      //存入共享的数据    

在其它的Servlet中利用ServletContext对象获取共享的数据   

ServletContext context = this.getServletContext();   /*获取ServletContext对象*/  

String name = context.getAttribute("name");          //获取共享的数据   

System.out.println("共享的内容值是:"+name);  

2.用于访问web应用参数(也在web.xml中)<context-param></context-param>

在DemoServlet的doPost方法中测试获取初始化参数的步骤如下:   

 ServletContext context = this.getServletContext();  /*获取ServletContext对象*/     

String url = context.getInitParameter("url");            //获取指定名称的初始化参数           

 Enumeration<String> enumer = context.getInitParameterNames();    //获取web.xml文件中所有的初始化应用参数  

while(enumer.hasMoreElements()){   

String name = enumer.nextElement();   

 String value = context.getInitParameter(name);   

 System.out.println(name+"=========="+value);   

    }  

其他功能见博客    https://blog.csdn.net/qiqiongran_luck/article/details/6889037

 

当有些表单类型输入是多个值的时候,例如复选框

<input type=checkbox name=sizes value="12oz">12 oz.<br>

<input type=checkbox name=sizes value="16oz">16 oz.<br>

<input type=checkbox name=sizes value="22oz">22 oz.<br>

如果你想看到数组内的所有内容,可以使用

PrintWriter out = response.getWriter();

String []sizes = request.getParameterValues("sizes");

for(int i=0;i<sizes.length;i++){

out.println(sizes[i]);

}

 

响应里不止可以放html,还可以放别的,例如

当用户想下载一个jar文件

response.setContentType("application/jar");

ServletContext ctx = getServletContext;

InputStream is = ctx.getResourceAsStream("/bookCode.jar");

int read =0;

byte [] bytes = new byte[1024];

OutputStream os = response.getOutputStream();

while((read=is.read(bytes))!=-1){

os.write(bytes,0,read);

}

输出

PrintWriter writer = response.getWriter();

writer.println("......");

ServletOutputStream out = response.getOutputStream();

out.write(".......");

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值