javaEE-----------------servlet的一些基础知识

第一次访问servlet时会执行1次构造和init方法,而且只执行一次。后面再有请求时,这两个方法不会再执行了(单例)
service()方法每一次请求都会执行一次  destroy()方法在servlet消亡时会执行一次
采用继承HttpServlet方式写servlet时,必须要覆盖doGet和doPost两个方法,否则在HttpServlet类内部的service()方法会调用它写的doGet和doPost方法,而这两个方法会输出405错误信息
<!-- 默认servlet:url映射路径设置为“/” ,在web.xml中没有找到相应匹配servlet的所有请求都会导向该默认servlet,可以屏蔽tomcat的404
 <servlet-mapping>
   <servlet-name>DefaultServlet</servlet-name>
   <url-pattern>/</url-pattern>
 </servlet-mapping>
   -->
// 已知参数名
ServletConfig config = getServletConfig();  
String name = config.getInitParameter("name");
String age = config.getInitParameter("age");
out.println(name + "," + age);


// 遍历
Enumeration<String> en = config.getInitParameterNames();
while (en.hasMoreElements()) {
String key = en.nextElement();
String value = config.getInitParameter(key);
out.println("<br/>" + key + " : " + value);
}
ServletConfig config2 = getServletConfig();// 和Servlet一样,ServletConfig也是单例
out.println("<br/>" + (config == config2));// true


//获取ServletContext对象---代表整个项目
ServletContext ctx = getServletContext();//这是一个容器
Integer count = (Integer) ctx.getAttribute("count");
if(count==null){
ctx.setAttribute("count", 1);
count=1;
}else{
count++;
ctx.setAttribute("count", count);
}
out.println("点击量:"+count);


//Web开发中的4个容器: servletContext, session, request, pageContext
//※※Servlet是单例,所有客户端(线程)共享同一个servlet,因此servlet对象的成员变量也是所有客户端共享的
//※※技术: 获取WebRoot目录下的资源文件
String realPath= getServletContext().getRealPath("/imgs") ;//带盘符的绝对路径
String path = request.getContextPath();//Tomcat根目录下的项目相对路径--- "/项目名" ---这部分正是前端与后台的“/”相差




request.setCharacterEncoding("utf-8");
String charset = request.getCharacterEncoding();
System.out.println(charset);//如果我们没有设置编码即是返回null---则用的是Tomcat自己的编码:ISO8859-1


request.getContentLength();//请求体中内容的长度,如果是GET方式(请求体是空的),返回的是-1。POST方式,返回值是表单数据的长度


String method = request.getMethod(); //通过该值可以区分出:GET和POST的提交方式


//本地化信息----国际化
Locale ll = request.getLocale();
System.out.println(ll.getCountry());//CN
System.out.println(ll.getDisplayCountry());//中国
System.out.println(ll.getLanguage());//zh
System.out.println(ll.getDisplayLanguage());//中文


//获取GET方式的url中“?”号后面的部分
//http://localhost:8080/servletDemo3/upload?name=Jack&sex=male
String qStr = request.getQueryString();
System.out.println("qStr: "+qStr);//qStr: name=Jack&sex=male


request.getParameter("name");//通过参数名字拿参数的值
request.getParameterValues("hoby");//也是通过参数的名字拿值,但如checkbox里面的值可能不只一项,返回数组
request.getParameterMap();//返回一个包含所有参数的Map


request.getParameterNames();//获取前端页面所上传所有参数的名字,返回一个Enumeration类型,
//通过pNames.hasMoreElements()判断元素的存在,
//通过pNames.nextElement()拿到元素,
//通过request.getParameter()拿到参数的值


Enumeration pNames=request.getParameterNames();
while(pNames.hasMoreElements()){
String nm = (String)pNames.nextElement();
String value = request.getParameter(nm);
out.println(nm+" "+value+"</br>");//注意combox
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值