java使用初始化输入参数_使用初始化参数配置java web应用程序

在编写java web应用程序的时候,我们难免会遇到需要使用参数来初始化应用程序的问题。在这里介绍最简单的三种方式:使用上下文参数进行配置、使用Servlet初始化参数以及使用注释来初始化参数。

这些参数有很多的用途,比如定义数据库的连接信息、作为全局变量等。它们在应用程序启动的时候被定义,只有重启应用程序才可以修改这些参数。

1>使用上下文参数进行配置

在web.xml文件中使用标签声明上下文初始化参数:

XHTML

first

AmosH's

second

blog

1

2

3

4

5

6

7

8

first

AmosH's

second

blog

该代码创建了两个上下文初始化参数:值为AmosH’s的first以及值为blog的second。这样我们在Servlet代码的任何地方都可以使用这些初始化参数。

Java

@WebServlet(

name = "AmosH",

urlPatterns = {"/blog"},

loadOnStartup = 1

)

public class HelloServlet extends HttpServlet{

@Override

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException{

//创建ServletContext类,用以管理上下文参数

ServletContext sc = this.getServletContext();

PrintWriter pr = response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

@WebServlet(

name="AmosH",

urlPatterns={"/blog"},

loadOnStartup=1

)

publicclassHelloServletextendsHttpServlet{

@Override

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsIOException{

//创建ServletContext类,用以管理上下文参数

ServletContextsc=this.getServletContext();

PrintWriterpr=response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

运行结果:

javaweb.pngjavaweb

2>使用Servlet初始化参数

使用Servlet初始化参数可以为该Servlet创建一个专属的初始化参数。这些参数绑定在这个类上,只能被它所用。

首先在web.xml文件中,为Servlet绑定初始化参数:

XHTML

AmosH

com.HelloServlet

first

和喧嚣保持距离

second

与梦想平等交易

AmosH

/blog

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

AmosH

com.HelloServlet

first

和喧嚣保持距离

second

与梦想平等交易

AmosH

/blog

看下面的代码,和使用上下文参数进行配置看起来很相像,但是这里使用的是ServletConfig类来获取初始化参数:

Java

public class HelloServlet extends HttpServlet{

@Override

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException{

ServletConfig sc = this.getServletConfig();

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html");

PrintWriter pr = response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

publicclassHelloServletextendsHttpServlet{

@Override

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsIOException{

ServletConfigsc=this.getServletConfig();

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html");

PrintWriterpr=response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

运行结果:

web.pngwebapp

3>使用注解获取注解

我们可以通过注解的方式,移除web.xml中的servlet标签和servlet-mapping标签:

Java

@WebServlet(

name = "blog",

urlPatterns = {"/blog"},

loadOnStartup = 1,

initParams = {

@WebInitParam(name="first",value="玄学编程"),

@WebInitParam(name="second",value = "佛性养生")

}

)

public class HelloServlet extends HttpServlet{

@Override

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws IOException{

ServletConfig sc = this.getServletConfig();

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html");

PrintWriter pr = response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

@WebServlet(

name="blog",

urlPatterns={"/blog"},

loadOnStartup=1,

initParams={

@WebInitParam(name="first",value="玄学编程"),

@WebInitParam(name="second",value="佛性养生")

}

)

publicclassHelloServletextendsHttpServlet{

@Override

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsIOException{

ServletConfigsc=this.getServletConfig();

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html");

PrintWriterpr=response.getWriter();

pr.append(sc.getInitParameter("first"));

pr.append(" ");

pr.append(sc.getInitParameter("second"));

}

}

运行效果:

web1.png注解修改初始化参数

这样虽然比使用部署描述符更加简洁,不过这样也有一个缺点,就是修改了参数之后必须重新编译之后才能使得修改生效。既然必须重新编译才能生效,不如将其设置为类常量。

使用web.xml这样的部署描述符的优点便是,修改后只需要重启应用程序即可生效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值