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中的配置
<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中
示例如下:
private@Resource(name = “hello”) String hello; //一行的写法 @Resource(name = "i") //两行的写法 private int i;在web.xml中用<env-entry>标签来配置资源
<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同样可以获取到这三个资源
Context ctx =new InitialContext(); String message =(String)ctx.lookup("message"); Integer i =(Integer)ctx.lookup("i");Servlet中不仅可以注释String、Integer等类型的变量,还可以注射自定义的Java Bean以及数据源等复杂类型变量
Servlet是线程不安全的
相关文章
- 10-07(5.2)配置与管理工具——启动参数与单用户模式启动
- 10-07webpack优化之配置排除打包与引用网络资源
- 10-07yarn-site.xml的部分资源配置参数,主要是与内存相关
- 10-07Darknet 训练YoloV3数据集变换扩充与参数配置说明
- 10-07【SpringBoot WEB系列】WebFlux静态资源配置与访问
- 10-07关于Servlet程序中ServletConfig接口与ServletContext里面初始化参数的遍历
- 10-07app.run相关参数与flask配置文件
- 10-07Spring Boot:如何配置静态资源的地址与访问路径
- 10-07【Servlet】HttpServletResponse实现下载文件、验证码功能、实现重定向,使用HttpServletRequest获取前端传递的参数+请求转发,请求转发与重定向
- 10-07微信公众平台二次开发需要配置的几个地址与参数