ServletContext应用

未来我们肯定会将JDBC的内容与JavaWeb的内容联合一起使用。而且以下几个ServletContext的使用将来要么会被Session、 Request、类加载、反射替代,要么很少使用,只是了解底层原理
1、获取初始化参数
先新建一个类叫ServletDemo,代码如下

public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String url = context.getInitParameter("url");
        resp.getWriter().print(url);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

然后需要注册Servlet和用把“url”的内容写到ServletContext中,从而使得上面那个类可以创建ServletContext对象然后调用getInitParameter方法来获取“url”的值。
所以web.xml文件中增加以下代码

<!--配置一些Web应用初始化参数-->
  <!--配置Jdbc-->
  <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306</param-value>
    <!--如果以后用mybatis框架只要在后缀再加上mybatis就行-->
  </context-param>

  <servlet>
    <servlet-name>getParameter</servlet-name>
    <servlet-class>com.sunsplanter.Servlet.ServletDemo</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>getParameter</servlet-name>
    <url-pattern>/getParameter</url-pattern>
  </servlet-mapping>

2、请求转发
再新建一个类ServletDemo04,代码如下

public class ServletDemo04 extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        RequestDispatcher requestDispatcher = context.getRequestDispatcher("/getParameter");
        requestDispatcher.forward(req,resp);
        //下面这句代码等价
        //context.getRequestDispatcher("/getParameter").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

在注册servlet,代码如下

   <servlet>
    <servlet-name>ReqDispatch</servlet-name>
    <servlet-class>com.sunsplanter.Servlet.ServletDemo04</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ReqDispatch</servlet-name>
    <url-pattern>/ReqDispatch</url-pattern>
  </servlet-mapping>

启动Tomcat后缀加上ReqDispatch后,发现实际访问的页面是第一个例子中的getParameter的Servlet,但路径并没有变化,这涉及到请求转发和重定向的区别问题。区别如下
在这里插入图片描述
3、读取资源文件
Properties文件编译后在target的WEB-INF->classes文件夹下,说明Java代码和Properties都被打包到了同一路径“classpath”。
我们之前谈论到一个问题,就是资源有时不能完全导出,原因就在于main函数内默认只能放java代码,如果有类似properties的文件就无法导出,需要在该工程的pom.xml文件下添加build配置resources,来防止资源导出失败的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值