java servlet初始化参数_2.6.1 分配servlet初始化参数

本文介绍了如何控制Servlet和JSP的启动行为,重点讲解了如何分配Servlet初始化参数。通过`init-param`元素设置参数,如在InitServlet中通过`getServletConfig().getInitParameter`获取。注意,初始化参数在特定URL下有效,如清单2.9所示的`/showInitValues`。默认URL访问时,参数可能无效。示例代码展示了Servlet如何接收和处理这些参数。
摘要由CSDN通过智能技术生成

2.6  初始化和预加载servlet和JSP页面

本节讨论如何控制servlet和JSP页面的启动行为。具体说来,本节将解释如何分配初始化参数,如何在servlet和JSP页面加载时服务器的生命周期间进行修改。

2.6.1  分配servlet初始化参数

可以通过init-param元素(包含param-name和param-value这两个子元素)来为servlet提供初始化参数。例如,在下面的示例中,如果通过http://host/webAppPrefix/showinitValue形式的URL来访问InitServlet ,它将从其init方法调用getServletConfig().getInitParameter("firstName")来得到"Larray";调用getServletConfig().getInitParameter("emailAddress")来得到"ellison@microsoft.com"。

InitTest

coreservlets.InitServlet

firstName

Larry

emailAddress

ellison@microsoft.com

InitTest

/showInitValues

在处理初始化参数时,重点关注以下内容。

返回值  getInitParameter的返回值总是一个String值。所以对于整数类型的参数,可以使用Integer.parseInt来获得一个int值。

返回空值  如果传给getInitParameter方法的参数在servlet的init-param声明中没有出现,函数将返回null值。因为除了Java开发人员,没有人可以修改web.xml,所以应该养成习惯总是在代码中检查null值。

在JSP中初始化  JSP页面使用jspInit而不是init方法。JSP页面还要用jsp-file元素来代替servlet-class,正如2.4节描述的一样。JSP页面的初始化将在下一节讨论。

默认URL  初始化参数仅用于使用与其名称相关联的自定义URL路径访问时。所以在这个例子中,firstName和emailAddress初始化参数在仅用于http://host/webAppPrefix/showInitValues这个URL进行访问时。但在使用http://host/webAppPrefix/servlet/coreservlets.InitServlet访问时无效。

核心警告:servlet中的初始化参数在使用其默认URL访问时无效。

比如,清单2.8显示了一个简单的servlet,即InitServlet,它使用init方法来设置firstName和emailAddress。清单2.9显示了web.xml文件的部分内容,其中演示了为servlet配置/showInitValues URL。图2.12和图2.13显示了分别使用自定义URL(正确的)和默认URL(错误的)两种方式来访问servlet的结果。

记住哪个URL可以访问哪个不能访问实在太难。在实际的Web应用中,通常会禁用servlet默认访问路径,因而每个servlet只有一个URL。只有快测试时才会保留servlet特有的默认请求路径。

清单2.8  InitServlet.javapackagecoreservlets;

importjava.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

/** Simple servlet used to illustrate servlet

* initialization parameters.

*/

publicclassInitServletextendsHttpServlet {

privateString firstName ="First name is missing.";

privateString emailAddress ="Email address is missing";

publicvoidinit() {

ServletConfig config = getServletConfig();

if(config.getInitParameter("firstName") !=null) {

firstName = config.getInitParameter("firstName");

}

if(config.getInitParameter("emailAddress") !=null) {

emailAddress = config.getInitParameter("emailAddress");

}

}

publicvoiddoGet(HttpServletRequest request,

HttpServletResponse response)

throwsServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

String uri = request.getRequestURI();

out.println("HTML PUBLIC \"-//W3C//DTD HTML 4.0 "+

"Transitional//EN\">"+"\n"+

"\n"+"

"+

"Init Servlet"+"

\n"+

"

\n"+

"

Init Parameters:

\n"+

"

  • \n"+

"

First name: "+ firstName +"\n"+

"

Email address: "+ emailAddress +"\n"+

"

\n"+

"");

}

}

清单2.9  web.xml (节选,说明初始化参数)<?xml  version="1.0"encoding="ISO-8859-1"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation=

"http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

version="2.4">

InitTest

coreservlets.InitServlet

firstName

Larry

emailAddress

ellison@microsoft.com

InitTest

/showInitValues

0a22bd9f673da93c6ada709ff5cc2b34.png

(点击查看大图)图2.12  使用其自定义URL正确访问InitServlet

c036e1a69dbda305089e70d2b379d85f.png

图2.13  使用默认URL错误访问InitServlet。禁用servlet的默

认访问可避免这个错误

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: apktool是一个用于反编译和重新编译Android应用程序的工具。它帮助开发人员了解和修改应用程序的内部结构。apktool_2.6.1.jar是apktool的一个特定版本。 使用apktool_2.6.1.jar的一般步骤如下: 1. 下载apktool_2.6.1.jar文件和与之兼容的Java运行环境(JRE)。 2. 打开终端或命令行窗口,并导航到包含apktool_2.6.1.jar文件的目录。 3. 接下来,你可以使用以下命令行选项之一来使用apktool_2.6.1.jar: - "apktool d <apk路径>":这个命令用于反编译指定的APK文件。APK文件将被解压缩到当前目录的子目录中。你可以在这个子目录中找到应用程序的资源、XML文件、源代码等。 - "apktool b <反编译目录>":这个命令用于重新编译先前反编译的应用程序。指定的反编译目录将被重新打包成一个新的APK文件。 4. 根据你的需求,你可以在反编译期间使用其他选项,如"--no-src"(不反编译源代码)和"--force"(强制覆盖目标文件)。 总而言之,apktool_2.6.1.jar是一个功能强大的工具,它允许你反编译和重新编译Android应用程序。它提供了命令行界面,使你能够轻松地修改应用程序的资源、XML文件和源代码。通过使用适当的命令行选项,你可以定制反编译和重新编译过程,以满足你的具体需求。 ### 回答2: apktool_2.6.1.jar 是一个用于反编译和编译Android APK文件的工具。以下是它的一些用法: 1. 反编译APK文件:通过运行以下命令,可以将APK文件解析为其源代码和资源文件: java -jar apktool_2.6.1.jar d filename.apk 这将在当前目录下创建一个新的文件夹,其中包含解析出的源代码和资源文件。 2. 编辑应用程序代码:在反编译APK文件后,可以编辑解析出的源代码。你可以使用任何文本编辑器进行修改,以实现对应用程序的必要更改。 3. 重新编译APK文件:在完成对源代码的修改后,可以重新编译APK文件,使用以下命令: java -jar apktool_2.6.1.jar b foldername "foldername" 是解析出的源代码文件夹的名称。这将重新打包和编译应用程序,并在当前目录中生成一个新的APK文件。 4. 安装APK文件:你可以使用adb工具或将生成的APK文件传输到你的Android设备上,并通过点击进行安装。 需要注意的是,使用apktool_2.6.1.jar 时需要先安装Java运行环境。此外,apktool还具有其他选项和功能,可以通过运行"java -jar apktool_2.6.1.jar"命令查看帮助文档以获取更多信息和用法示例。 总之,apktool_2.6.1.jar 是一个方便的工具,可以帮助开发人员进行Android APK文件的反编译和编译,以便进行应用程序的修改和定制。 ### 回答3: apktool_2.6.1.jar 是一种用于反编译和编译APK文件的工具。下面是一些关于使用 apktool_2.6.1.jar 的常见用法说明: 1. 反编译:使用以下命令将 APK 文件反编译为其包含的资源文件和 Smali 代码: java -jar apktool_2.6.1.jar d <apk文件路径> -o <输出目录> 例如:java -jar apktool_2.6.1.jar d app.apk -o output/ 反编译后的资源文件将会存储在 output/ 目录中,可以在这里查看和修改应用程序的资源。 2. 编译:使用以下命令将修改后的资源文件和 Smali 代码编译回 APK 文件: java -jar apktool_2.6.1.jar b <输入目录> -o <输出APK文件路径> 例如:java -jar apktool_2.6.1.jar b output/ -o modified_app.apk 编译过程会将修改后的资源文件和 Smali 代码重新打包为一个 APK 文件,保存到指定的输出路径中。 3. 重新签名:由于反编译和编译过程会破坏应用程序的签名,所以需要重新对 APK 文件进行签名。可以使用 Android SDK 中的工具进行签名,例如 jarsigner。 例如:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <你的密钥库文件路径> -storepass <密钥库密码> modified_app.apk <密钥库别名> 这样,重新签名后的 APK 文件就可以安装在 Android 设备上了。 这些是 apktool_2.6.1.jar 常见的用法。通过反编译和编译 APK 文件,可以查看和修改应用程序的源码、资源和配置文件等内容,帮助开发人员进行应用程序的逆向工程或定制化开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值