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
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应用程序相关推荐
- java中无法解析字符串_关于java:从输入中解析字符串作为参数问题
我想给我在UNIX中编写的Java程序增加更多的命令,但是有问题传递参数.我刚刚在Unix中输入了之前的命令,并将文本文件作为一个程序参数,这个参数工作得很好,但是我想请求输入.试图解决它自己,但有点 ...
- java 启动内存参数_请问该如何设置Java虚拟机JVM启动内存参数?
jps(JVM Process Status Tool):JVM机进程状况工具 用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等.与unix上的ps类似,用 ...
- java正则不能输入汉字_求一个正则表达式只输入字母或数字或汉字,要过滤特殊字符...
正则表达式:只能有数字或中文或字母组成 chenzhe_n16292018-09-06 一个正则表达式测试(只可输入中文.字母和数字) u0129242379192015-10-05 js正则表达式限 ...
- 在java中如何输入角度_在Java中获取角度的反余弦
为了获得Java中给定值的反余弦,我们使用java.lang.Math.acos()方法.该acos()方法接受需要计算角度的双精度值.返回的角度范围在0到pi之间.如果参数为NaN或大于1或小于-1 ...
- java运行库一键修复_在运行时修补Java
java运行库一键修复 本文将重点介绍如何解决与第三方库相关的问题 不能被规避 难以排除/绕过/更换 只需不提供错误修正 在这种情况下,解决问题仍然是一项艰巨的任务. 作为这种情况的诱因,请考虑对&q ...
- java反射获取方法内部_公共技术点之 Java 反射 Reflection
本文为 Android 开源项目源码解析 公共技术点中的 Java 反射 部分 分析者:Mr.Simple,校对者:Trinea,校对状态:未完成 1. 了解 Java 中的反射 1.1 什么是 Ja ...
- java webservice报文过长_工作1-5年的Java程序猿到底需要怎样的一个技术栈?
工作1-5年的Java程序猿到底需要怎样的一个技术栈? 前言: 具有1-5年开发经验的程序员 需要学习的内容其实还有很多很多. 今天跟大家交流一下希望分享出来的对大家能够有帮助,这是我这些年总结出的一 ...
- java异常没有catch住_今天才真正了解Java的异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 异常发生的原因有很多,通常包含以下几大类: 1.用户输入了非法数据. 2.要打开的文件不存在. 3.网络通信时连接中断 ...
- java源码聊天软件_【原创】基于Java NIO的多人在线聊天工具源码实现(登录,单聊,群聊)...
近来在学习Java NIO网络开发知识,写了一个基于Java NIO的多人在线聊天工具MyChat练练手.源码公开在Coding上: 编写一个基于Java NIO的多人在线聊天工具,需要以下几方面的知 ...
最新文章
- 网络优化(中国计量大学现代科技学院第三届“中竞杯”程序设计校赛(网络赛))
- ip classless作用
- No qualifying bean of type xxx‘ available 的一种解决方法
- 怀旧服野外pvp最多的服务器,魔兽怀旧服:最想要去的服务器,野外PVP很“传统”,很欢乐!...
- 电子地图开发中栅格模型与矢量模型的区别
- 保留小数点位数和格式
- 计算机图像图形设计制作 步骤,怎样在电脑上制作流程图?小编“墙裂”推荐它!...
- KMP算法模板与解析
- 已添加了具有相同键的项_减糖的另一种创新方案:不被计算为“添加糖”的水果泥...
- GPS 经纬度转换 百度、高德经纬度
- vue 获取excel文件表头 .xls
- QueryList异步抓取网页数据
- C语言 自定义类型 之 【枚举】
- vue实现查询组件的封装
- python pygame模块按键响应
- 李永乐团队2021数学基础过关660题勘误表
- 公司官网产品爬取写入ES
- 计算机视觉——双目视觉匹配计算视差深度
- c#:mvc单选按钮(性别)
- Word、Excel、PPT软件打开关闭时很慢(卡顿)的一种解决方法
热门文章
- Apache20、lighttpd、nginx的比较[zt]
- Spring+Spring Boot+Mybatis框架注解解析
- setTimeout,setInterval你不知道的事
- 《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
- UPPERERR.txt
- Linux+Apache+Mysql+PHP典型配置
- 花钱你都学不到的“饭局”规矩~
- axios_的默认配置_使用演示---axios工作笔记008
- OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
- k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055