Récapitulatif des objets JAVAWEB à quatre domaines

Les méthodes contenues dans les quatre objets de domaine

1,pubic void setAttribute(String name,*Object value*):向域中存储数据,指定名称
2,public *Object* getAttribute(String name):获取域对象中指定name的值
3,public void removeAttribute(String name):删除域对象中指定name的值

Objet de domaine Servletcontext

生命周期:
  • Créer: lorsque le serveur démarre, le serveur crée un objet de domaine ServletContext pour chaque projet Web sur le serveur
  • Destruction: lorsque le serveur est arrêté ou lorsque l'élément est supprimé du serveur
  • Champ d'application: il peut être utilisé tant que le projet est en cours d'exécution. Il s'agit du plus grand objet de domaine auquel tous les servlets peuvent accéder.

Le rôle de servletContext:

  1. Objets de domaine de portée d'application:
    créez trois servlets séparément pour stocker, obtenir, supprimer des données, tester que l'objet de domaine servletcontext est valide pour toutes les servlets actuelles.
    Affichage du code:
    étape 1:
    créer un lien:
<body>
  <a href="${pageContext.request.contextPath}/ContextServlet">存储数据</a>
  <a href="${pageContext.request.contextPath}/Context1Servlet">获取数据</a>
  <a href="${pageContext.request.contextPath}/Context2Servlet">删除数据</a>
  </body>
step2:
	创建ContextServlet:
@WebServlet("/ContextServlet")
public class ContextServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //告诉浏览器响应的数据类型
        response.setContentType("text/html;charset=utf-8");
        //获取servletContext域对象,方法是从父类中继承过来的
        ServletContext sc = getServletContext();
        //存放数据到域对象中
        sc.setAttribute("wp","666");
        response.getWriter().write("存储成功!");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
step3:
	创建Context1Servlet:
@WebServlet("/Context1Servlet")
public class Context1Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //告诉浏览器响应的数据类型
        response.setContentType("text/html;charset=utf-8");
        //获取servletContext域对象,方法是从父类中继承过来的
        ServletContext sc = getServletContext();
        //获取servletContext域对象中的数据
        String wp = (String) sc.getAttribute("wp");
        response.getWriter().write("获取到的数据是:"+wp);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

step4:
	创建Context2Servlet:
@WebServlet("/Context2Servlet")
public class Context2Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //告诉浏览器响应的数据类型
        response.setContentType("text/html;charset=utf-8");
        //获取servletContext域对象,方法是从父类中继承过来的
        ServletContext sc = getServletContext();
        //删除域对象中name为“wp”的数据
        sc.removeAttribute("wp");
        response.getWriter().write("删除成功!");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

Résultat: lorsque vous cliquez sur Stocker les données, les données sont stockées dans l'objet de domaine servletContext. À ce stade, cliquez sur Obtenir les données pour afficher les données 666. Lorsque vous cliquez sur Supprimer les données, cliquez sur Obtenir les données pour afficher null.


  1. Méthodes courantes pour obtenir la configuration des paramètres au niveau de l'application (paramètres de configuration globale, uniquement xml) :
    1, public String getInitParamter (String name): obtenir les informations des paramètres de configuration du nom spécifié
    2, public Enumeration <String> getInitParamterNames (): obtenir toutes les applications Paramètres de niveau
    Affichage du code:
    étape 1:
    configurer les paramètres de niveau d'application dans web.xml:
<context-param>
        <param-name>wp</param-name>
        <param-value>66</param-value>
    </context-param>
    <context-param>
        <param-name>wpp</param-name>
        <param-value>666</param-value>
    </context-param>
step2:
	创建Deno1Servlet:
@WebServlet("/Demo1Servlet")
public class Demo1Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取servletContext域对象
        ServletContext sc = getServletContext();
        //获取wp的取值
        String wp = sc.getInitParameter("wp");
        System.out.println(wp);
        //获取所有的配置参数
        Enumeration<String> ipn = sc.getInitParameterNames();
        //遍历
        while (ipn.hasMoreElements()){
            String s = ipn.nextElement();
            System.out.println(sc.getInitParameter(s));
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

Sortie:
66
666
66

  • Obtenir le vrai chemin des ressources Web
    Méthodes communes:
    1, chaîne publique getRealPath ("/ path"): obtenir le vrai chemin (must / before servlet3.0)
    2. public inputstream getresourceAsStream ("/ path"): obtenir l'entrée de cette
    Affichage du code objet du flux :
@WebServlet("/Demo2Servlet")
public class Demo2Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取servletContext域对象
        ServletContext sc = getServletContext();
        //获取真实路径
        String realPath = sc.getRealPath("/images/5.jsp");
        System.out.println("真实路径:"+realPath);
        //输出结果:真实路径:E:\idea工作区间\javaweb129\out\artifacts\MyTest_war_exploded\images\5.jpg
        //getrealpath()方法不管路径存不存在,都可以获取到真实路径
        //需要注意的是,此图片的路径在web下的images文件夹下
        InputStream is = sc.getResourceAsStream("/images/5.jpg");
        ServletOutputStream os = response.getOutputStream();
        int len;
        byte[] b=new byte[1024];
        while ((len=is.read(b))!=-1){
            os.write(b,0,len);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

Objet de domaine HttpSession

Cycle de vie:

  • Créer: en java, il est créé par le serveur lorsque getSession () est appelé pour la première fois dans une session; en jsp, il est créé lorsque vous accédez à n'importe quelle interface jsp pour la première fois dans une session
  • Destruction: lors de l'
    appel de la méthode invalidate () Lorsque le
    serveur expire: le serveur Web spécifie le délai d'expiration par défaut, tomcat est de 30 minutes
//此代码在tomcat的conf目录的web.xml中
<session-config>
        <session-timeout>30</session-timeout>
    </session-config>
服务器关闭时:服务器关闭时,我们可以通过钝化(将session数据保存到硬盘中)和活化(将session数据回复到session中)
  • Champ d'action: dans une session, le servlet et le jsp impliqués peuvent être utilisés

Objet de domaine HttpServletRequest

Cycle de vie:

  • Créer: créé par le serveur à la demande du navigateur
  • Destruction: détruite par le serveur lors de la génération de la réponse
  • Portée: une seule demande
  • Attention! Les données de l'objet de domaine de demande peuvent être partagées dans deux servlets lors du transfert, mais elles ne peuvent pas l'être dans la redirection.
    Démonstration de code:
    étape 1:
    créez un Demo3Servlet pour stocker les données dans l'objet de domaine
@WebServlet("/Demo3Servlet")
public class Demo3Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //向httpservletrequest域对象中存储数据
        request.setAttribute("data","一对数据");
        //转发到Demo4Servlet
        request.getRequestDispatcher("Demo4Servlet").forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
step2:
	在此域对象中获取到了转发来的数据
@WebServlet("/Demo4Servlet")
public class Demo4Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取域中的数据
        String data = (String) request.getAttribute("data");
        //输出:一对数据
        System.out.println(data);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

Objet de domaine PageContext

Cycle de vie:

  • Créer: créer lorsque la demande à jsp démarre

  • Détruire: détruire lorsque la réponse est terminée

  • Portée: la page entière (la plus petite portée des quatre objets de domaine)
    fonctionne:

  • Récupère les huit autres objets
    intégrés getException () renvoie Exception.
    getPage () renvoie Page.
    getRequest () renvoie la demande.
    getResponse () renvoie la réponse.
    getServletConfig () renvoie la configuration.
    getServletContext () renvoie l'application.
    getSession () renvoie la session.
    getOut () revient

  • En tant qu'objet de domaine

  • Dans l'interface actuelle, vous pouvez utiliser les trois autres objets de domaine
    setAttribute (quel champ de clé String, valeur String, int):
    getAttribute (quel champ de clé String, int)
    removeAttribute ( quel champ de clé String, int)
    fi ndAttribute (clé String): à son tour à partir de jsp Recherchez la clé spécifiée une par une dans les quatre champs de petit à grand (la plage du champ). Si elle est trouvée, retournez directement, terminez la recherche, si elle ne retourne pas null

Publié un article original · Likes0 · Visits1

Je suppose que tu aimes

Origine blog.csdn.net/SUPER__W/article/details/105440298
conseillé
Classement