在编写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

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"));

}

}

运行结果:

webapp

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"));

}

}

运行效果:

注解修改初始化参数

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

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

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

  1. java中无法解析字符串_关于java:从输入中解析字符串作为参数问题

    我想给我在UNIX中编写的Java程序增加更多的命令,但是有问题传递参数.我刚刚在Unix中输入了之前的命令,并将文本文件作为一个程序参数,这个参数工作得很好,但是我想请求输入.试图解决它自己,但有点 ...

  2. java 启动内存参数_请问该如何设置Java虚拟机JVM启动内存参数?

    jps(JVM Process Status Tool):JVM机进程状况工具 用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等.与unix上的ps类似,用 ...

  3. java正则不能输入汉字_求一个正则表达式只输入字母或数字或汉字,要过滤特殊字符...

    正则表达式:只能有数字或中文或字母组成 chenzhe_n16292018-09-06 一个正则表达式测试(只可输入中文.字母和数字) u0129242379192015-10-05 js正则表达式限 ...

  4. 在java中如何输入角度_在Java中获取角度的反余弦

    为了获得Java中给定值的反余弦,我们使用java.lang.Math.acos()方法.该acos()方法接受需要计算角度的双精度值.返回的角度范围在0到pi之间.如果参数为NaN或大于1或小于-1 ...

  5. java运行库一键修复_在运行时修补Java

    java运行库一键修复 本文将重点介绍如何解决与第三方库相关的问题 不能被规避 难以排除/绕过/更换 只需不提供错误修正 在这种情况下,解决问题仍然是一项艰巨的任务. 作为这种情况的诱因,请考虑对&q ...

  6. java反射获取方法内部_公共技术点之 Java 反射 Reflection

    本文为 Android 开源项目源码解析 公共技术点中的 Java 反射 部分 分析者:Mr.Simple,校对者:Trinea,校对状态:未完成 1. 了解 Java 中的反射 1.1 什么是 Ja ...

  7. java webservice报文过长_工作1-5年的Java程序猿到底需要怎样的一个技术栈?

    工作1-5年的Java程序猿到底需要怎样的一个技术栈? 前言: 具有1-5年开发经验的程序员 需要学习的内容其实还有很多很多. 今天跟大家交流一下希望分享出来的对大家能够有帮助,这是我这些年总结出的一 ...

  8. java异常没有catch住_今天才真正了解Java的异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 异常发生的原因有很多,通常包含以下几大类: 1.用户输入了非法数据. 2.要打开的文件不存在. 3.网络通信时连接中断 ...

  9. java源码聊天软件_【原创】基于Java NIO的多人在线聊天工具源码实现(登录,单聊,群聊)...

    近来在学习Java NIO网络开发知识,写了一个基于Java NIO的多人在线聊天工具MyChat练练手.源码公开在Coding上: 编写一个基于Java NIO的多人在线聊天工具,需要以下几方面的知 ...

最新文章

  1. 网络优化(中国计量大学现代科技学院第三届“中竞杯”程序设计校赛(网络赛))
  2. ip classless作用
  3. No qualifying bean of type xxx‘ available 的一种解决方法
  4. 怀旧服野外pvp最多的服务器,魔兽怀旧服:最想要去的服务器,野外PVP很“传统”,很欢乐!...
  5. 电子地图开发中栅格模型与矢量模型的区别
  6. 保留小数点位数和格式
  7. 计算机图像图形设计制作 步骤,怎样在电脑上制作流程图?小编“墙裂”推荐它!...
  8. KMP算法模板与解析
  9. 已添加了具有相同键的项_减糖的另一种创新方案:不被计算为“添加糖”的水果泥...
  10. GPS 经纬度转换 百度、高德经纬度
  11. vue 获取excel文件表头 .xls
  12. QueryList异步抓取网页数据
  13. C语言 自定义类型 之 【枚举】
  14. vue实现查询组件的封装
  15. python pygame模块按键响应
  16. 李永乐团队2021数学基础过关660题勘误表
  17. 公司官网产品爬取写入ES
  18. 计算机视觉——双目视觉匹配计算视差深度
  19. c#:mvc单选按钮(性别)
  20. Word、Excel、PPT软件打开关闭时很慢(卡顿)的一种解决方法

热门文章

  1. Apache20、lighttpd、nginx的比较[zt]
  2. Spring+Spring Boot+Mybatis框架注解解析
  3. setTimeout,setInterval你不知道的事
  4. 《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
  5. UPPERERR.txt
  6. Linux+Apache+Mysql+PHP典型配置
  7. 花钱你都学不到的“饭局”规矩~
  8. axios_的默认配置_使用演示---axios工作笔记008
  9. OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
  10. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055