首页 > 代码库 > Servlet配置与资源参数
Servlet配置与资源参数
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- // 继承HttpServlet 类
- public class HelloWorld extends HttpServlet {
- private String message;
- public void init() throws ServletException
- {
- // 执行必需的初始化
- message = "Hello World";
- }
- //此方法用来处理GET请求
- public void doGet(HttpServletRequest request,
- HttpServletResponseresponse)
- throws ServletException,IOException
- {
- // 设置响应内容类型
- response.setContentType("text/html");
- // 实际的逻辑是在这里
- PrintWriter out = response.getWriter();
- out.println("<h1>" +message + "</h1>");
- }
- //此方法用来处理POST请求
- public void doPost(HttpServletRequestrequest,
- HttpServletResponseresponse)
- throws ServletException,IOException
- {
- this.doGet(request,response);
- }
- public void destroy()
- {
- // 什么也不做
- }
- }
web.xml中的配置
[html] view plaincopyprint?
- <context-param><!-- 全局参数-->
- <param-name>uploadfolder</param-name>
- <param-value>attachment</param-value>
- </context-param>
- <servlet>
- <servlet-name>HelloWorld</servlet-name>
- <servlet-class>HelloWorld</servlet-class>
- </servlet>
- <init-param><!-- 只能有这个Servlet读取,不是全局参数-->
- <param-name>message</param-name>
- <param-value>welcom toservlet</param-value>
- </init-param>
- <servlet-mapping>
- <servlet-name>HelloWorld</servlet-name>
- <url-pattern>/HelloWorld</url-pattern>
- </servlet-mapping>
<url-pattern>可以同时配置多个映射,也允许使用通配符“*”和“_”
在Servlet中通过getServletConfig.getInitParameter(Stringname)来取得配置中的初始化参数(如果没有context初始化参数与Servlet的初始化参数同名,getServletContext.getInitParameter(String name)也可以取到此参数,但是不推荐这么用)
如果要取得context初始化参数,用getServletConfig.getServletContext. getInitParameter(String name)
上面的两种方法都是都是在编写程序代码时读取初始参数,java EE 5以后还提供了资源注射(Resource Injection)的方法,不需要Servlet主动地去读取资源,Tomcat启动时会把web.xml里配置的信息主动注射到Servlet中
示例如下:
[java] view plaincopyprint?
- private@Resource(name = “hello”) String hello; //一行的写法
- @Resource(name = "i") //两行的写法
- private int i;
在web.xml中用<env-entry>标签来配置资源
[html] view plaincopyprint?
- <env-entry>
- <env-entry-name>hello</env-entry-name>
- <env-entry-type>java.lang.String</env-entry-type>
- <env-entry-value>welcom toservlet</env-entry-value>
- <env-entry>
- <env-entry>
- <env-entry-name>i</env-entry-name>
- <env-entry-type>java.lang.Integer</env-entry-type>
- <env-entry-value>66</env-entry-value>
- <env-entry>
资源注射的原理是JNDI(java命名与目录接口,Java Naming and Directory Interface),如果不使用@Resource注解,通过查找JNDI同样可以获取到这三个资源
[java] view plaincopyprint?
- Context ctx =new InitialContext();
- String message =(String)ctx.lookup("message");
- Integer i =(Integer)ctx.lookup("i");
Servlet中不仅可以注释String、Integer等类型的变量,还可以注射自定义的Java Bean以及数据源等复杂类型变量
Servlet配置与资源参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。