• 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);
    
        }
    
  • 相关阅读:
    【webrtc】m98 call: 音频发送流、接收流的基础类/配置
    剑指 Offer 2022/7/5
    C++hello world出门遇到坑
    Linq to SQL语句之DataContext
    黑盒不黑:跨端 C/C++ 库一键源码调试方案
    【JAVA学习笔记】 68 - 网络——TCP编程、UDP编程
    【Perl】与【Excel】
    c/c++语言算法技巧汇总大复习2
    axios封装以及详细用法
    图神经推荐系统笔记整理
  • 原文地址:https://blog.csdn.net/Cobrander2_0/article/details/143337078