• JavaWeb


    Servlet

    servlet是一个接口,有一个HttpServlet extends GenericServlet,这个GenericServlet implements Servlet, ServletConfig, Serializable。

    在这么复杂的继承以及实现关系下,当我们定义的类继承了HttpServlet后,就可以通过前人写好的方法来进行Java Web的开发。来实现在网页上的呈现。那么就得通过一个服务器来实现。没错这个服务器就是Tomcat。我们通过配置Tomcat服务器,在服务器上注册这个类,使得他可以以网页的形式呈现出来。我们使用mapper来配置映射信息。

    
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
    
        <servlet>
            <servlet-name>helloservlet-name>
            <servlet-class>com.sunn.servlet.HelloServletservlet-class>
        servlet>
    
        <servlet-mapping>
            <servlet-name>helloservlet-name>
            <url-pattern>/hellourl-pattern>
        servlet-mapping>
    web-app>
    

    servlet-mapping标签下就是配置信息,我们可以通过/hello来访问,name就是id的意思,通过name来找到对应的Servlet,再通过class找到文件的具体位置。最终呈现出来。这就是实现的大致过程。

    ServletContext

    在web程序启动的时候,就会有一个ServletContext生成。这个ServletContext可以存储数据,也可以抛出数据。ServletContext的存在使得各个类之间可以通过ServletContext来实现数据共享。

    还可以使用ServletContext的一些api来输出配置信息等。我下面使用代码实现

    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext servletContext = this.getServletContext();
            String name = "孙哥";
            servletContext.setAttribute("name",name);
        }
    
    
    }
    
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext servletContext = this.getServletContext();
            //设置字符串。防止乱码
           resp.setCharacterEncoding("utf-8");
           resp.setContentType("text/html");
    
    
            String name =(String) servletContext.getAttribute("name");
            resp.getWriter().println("name = "+name);
    
        }
    

    上面体现了数据共享的过程,由hello…注入信息,下面的来获取。

    public class ServletContext03 extends HttpServlet {
        @Override
        protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPut(req, resp);
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext servletContext = this.getServletContext();
            //加载配置文件当中的信息进行返回
            String s= servletContext.getInitParameter("url");
            resp.getWriter().println(s);
        }
    }
    
    

    这个我提前在配置文件当中配置了该url的信息,很显然返回了

      <context-param>
            <param-name>urlparam-name>
            <param-value>host:8080param-value>
        context-param>
     <servlet>
            <servlet-name>urlservlet-name>
            <servlet-class>com.sunn.servlet.ServletContext03servlet-class>
        servlet>
        <servlet-mapping>
            <servlet-name>urlservlet-name>
            <url-pattern>/urlurl-pattern>
        servlet-mapping>
    

    跳转

    public class ServeltContext04 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            ServletContext servletContext = this.getServletContext();
            RequestDispatcher requestDispatcher = 	servletContext.getRequestDispatcher("/getname");
            requestDispatcher.forward(req,resp);
    
        }
    
  • 相关阅读:
    haproxy参数选择问题
    【QT进阶】Qt线程与并发之QtConcurrent的简单介绍
    基于4G智能网关的野外光伏逆变器数据采集方案
    强化学习Q-learning实践
    Redis(02)| 数据结构-SDS
    如何安装与配置Node.js
    谈谈对于Java平台的理解
    五矿集团params逆向分析
    11-js事件基础
    【FPGA教程案例37】通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换
  • 原文地址:https://blog.csdn.net/Cobrander2_0/article/details/143337078