java参数生命周期怎样_javaEE之------Servlet通过web.xml传参数(生命周期)

当用到这个方法的时候,我们必须要知道,Servlet的生命周期

Servlet的生命周期:

init方法。

只会被初始化一次。由容器初始化。初始化成功后将缓存与容器中。

它的初始时间分为两种:

用户第一次访问时。

服务器启动时。-需要配置。

service方法

每次请求都会访问此方法。

每次请求都会创建新的Request和Response对像。

destory方法

当服务器关闭时由容器调用并销毁。

图演示:

0818b9ca8b590ca3270a3433284dd417.png

能看到,每次想服务器请求都会先解析web.xml文件,然后下一步进行下一步操作

参数的传递:如我们需要指定字符编码等:就可以写在web.xml文件中

xml文件中写入参数代码:

ParamDemo

cn.hncu.TestXMLPara.ParamDemo

  charsetutf-8

charset2gbknameROSEage20

在xml文件中一般都是key---value 的形式。类似map的存储方式。所以我们去获取就用方法了

几种常用的方式-------拿出参数

获取web.xml中参数几种方法

* 1,通过ServletConfig对象获取

* 2,/直接利用当前servlet对象

* 3,通过ServletConfig对象获取所有配置的Servlet初始化参数,然后遍历

方法一:通过ServletConfig对象获取

//法一:因为在web.xml中都是ServletConfig对象里面的。通过ServletConfig对象获取

ServletConfig con =this.getServletConfig();

String charset=con.getInitParameter("charset");//拿出相应的参数

String charset1=con.getInitParameter("charset2");

String name=con.getInitParameter("name");

String age=con.getInitParameter("age");

System.out.println("这是法1获取参数:"+charset+","+charset1+","+name+","+age);

方法二: 直接利用servlet调用

//法二 直接利用servlet调用

String charset2 = this.getInitParameter("charset");

String charset3 = this.getInitParameter("charset2");

String name1=this.getInitParameter("name");

String age1=this.getInitParameter("age");

System.out.println("这是法2获取参数:"+charset2+","+charset3+","+name1+","+age1);

方法三:通过ServletConfig对象获取所有配置的Servlet初始化参数,然后遍历------类似于key------value

//法三 通过ServletConfig对象获取所有配置的Servlet初始化参数,然后遍历

ServletConfig con1 =this.getServletConfig();

String str="";

Enumeration en=con1.getInitParameterNames();//获得所有的参数

while(en.hasMoreElements()){

String key =en.nextElement();

String value=con1.getInitParameter(key);

str = str +","+ value;

}

System.out.println("这是法3获取参数:"+str);

上面的都只是相对于单个,不能应用于整个项目,不然需要一个个去单独配。很麻烦,所以采用sevletcontext可以指定整个

在web.xml中添加

charset123

utf-86

这样就可以了指定整个项目的参数,如字符编码,整个项目采用同一个字符编码,单个特殊的可以采用上面的方式单独配。

在Servlet中取也是不一样,需要采用Servletcontext方式

//获取全局变量的方式----写在ServletContext中,所以需要通过ServletContext()来获取

String aa=getServletContext().getInitParameter("charset123");//但是这个参数必须要一样

System.out.println("这是全局的参数"+aa);

request.setCharacterEncoding(aa);//这样就设置了采用指定的编码去接收从前台传过来的数据了

效果:可以获取参数:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值