Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲一区二区三区夜色,欧美激情在线免费观看,国产一级在线

          整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          「java就業(yè)班」2019從網(wǎng)頁搭建入門JavaWe

          「java就業(yè)班」2019從網(wǎng)頁搭建入門JavaWeb

          java就業(yè)班」2019從網(wǎng)頁搭建入門JavaWeb

          來百度APP暢享高清圖片

          //下栽のke:chaoxingit.com/1534/

          從網(wǎng)頁搭建入門到JavaWeb:2019版詳解

          一、引言

          隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,JavaWeb已經(jīng)成為了一種非常流行的開發(fā)技術(shù)。通過JavaWeb,我們可以快速地構(gòu)建出功能強大、安全可靠的Web應用程序。本文將詳細介紹如何從網(wǎng)頁搭建入門到JavaWeb,幫助你掌握這門技術(shù)。

          二、JavaWeb簡介

          JavaWeb指的是使用Java技術(shù)開發(fā)的Web應用程序。它是基于Java平臺的一種開發(fā)模式,用于構(gòu)建和部署在Web服務器上運行的應用程序。JavaWeb通常涉及以下關鍵組件和技術(shù):

          1. Servlet: Servlet是Java編寫的服務器端程序,主要用于處理HTTP請求和生成HTTP響應。它們運行在支持Servlet規(guī)范的Web服務器上,如Apache Tomcat、Jetty等。
          2. JSP(JavaServer Pages): JSP是一種服務器端的Java技術(shù),用于創(chuàng)建動態(tài)Web頁面。JSP頁面可以包含HTML、Java代碼片段和JSP標簽庫,它們會在服務器端被解析和執(zhí)行,最終生成HTML響應發(fā)送給客戶端。
          3. Servlet容器: Servlet容器是一個Web服務器組件,用于管理和執(zhí)行Servlet。它負責將HTTP請求路由到相應的Servlet,并將Servlet生成的響應發(fā)送回客戶端。
          4. JDBC(Java Database Connectivity): JDBC是Java提供的用于與數(shù)據(jù)庫交互的API。它允許Java應用程序通過標準的數(shù)據(jù)庫操作語句與各種關系型數(shù)據(jù)庫進行通信。
          5. Web容器: Web容器是一種用于托管和運行Web應用程序的環(huán)境。它提供了Servlet容器、JSP引擎以及其他必要的組件,使得開發(fā)者可以部署和管理JavaWeb應用程序。
          6. MVC架構(gòu)(Model-View-Controller): MVC是一種常用的設計模式,用于將應用程序分為三個核心部分:模型(Model)、視圖(View)和控制器(Controller)。在JavaWeb開發(fā)中,開發(fā)者通常使用MVC架構(gòu)來組織和管理應用程序的代碼。
          7. Web框架: JavaWeb開發(fā)中常用的框架包括Spring MVC、Struts、JSF(JavaServer Faces)等。這些框架提供了各種功能和工具,簡化了開發(fā)過程,并提高了代碼的可維護性和可擴展性。

          JavaWeb應用程序通常遵循HTTP協(xié)議,與客戶端通過HTTP請求和響應進行通信。它們可以處理各種類型的請求,包括GET、POST等,并能夠生成動態(tài)內(nèi)容以及與數(shù)據(jù)庫等外部資源進行交互。 JavaWeb的發(fā)展已經(jīng)成為構(gòu)建企業(yè)級應用程序的主流方式之一,它提供了強大的功能和豐富的生態(tài)系統(tǒng),使得開發(fā)者能夠構(gòu)建高性能、可靠和安全的Web應用程序。

          三、學習資源

          要想入門JavaWeb,你可以選擇以下學習資源:

          1. 官方文檔:Java官方文檔提供了豐富的JavaWeb學習資源,包括API文檔、框架文檔和教程等。
          2. 培訓課程:網(wǎng)絡上有很多免費的JavaWeb培訓課程,這些課程可以幫助你快速入門。
          3. 書籍:閱讀一些經(jīng)典的JavaWeb書籍,如《Head First Servlets and JavaServer Pages》等,可以幫助你深入理解JavaWeb技術(shù)。

          四、搭建開發(fā)環(huán)境

          搭建JavaWeb開發(fā)環(huán)境涉及到幾個主要組件,包括Java Development Kit (JDK)、集成開發(fā)環(huán)境(IDE)、Servlet容器等。以下是從頭開始搭建JavaWeb開發(fā)環(huán)境的步驟:

          1. 安裝Java Development Kit (JDK):
          • 首先,你需要安裝Java Development Kit,它包含了Java編譯器(javac)和Java運行時環(huán)境(JRE)。
          • 前往Oracle JDK官網(wǎng)或OpenJDK官網(wǎng)下載并安裝最新版本的JDK。
          • 設置JAVA_HOME環(huán)境變量,指向你的JDK安裝目錄。
        1. 安裝集成開發(fā)環(huán)境(IDE):
          • 選擇一個JavaWeb開發(fā)的IDE。Eclipse、IntelliJ IDEA和NetBeans是常見的選擇。
          • 下載并安裝你選擇的IDE。例如,你可以在IntelliJ IDEA官網(wǎng)下載IntelliJ IDEA。
        2. 安裝Servlet容器:
          • 選擇一個Servlet容器,例如Apache Tomcat。
          • 前往Apache Tomcat官網(wǎng)下載最新版本的Tomcat。
          • 解壓下載的文件到你想要安裝的目錄。
        3. 創(chuàng)建JavaWeb項目:
          • 打開你的IDE,創(chuàng)建一個新的JavaWeb項目。
          • 在項目中配置Servlet容器,以便在開發(fā)過程中能夠輕松部署和調(diào)試。
        4. 編寫第一個Servlet:
          • 在項目中創(chuàng)建一個Servlet類,這是JavaWeb應用程序的基本處理單元。
          • 實現(xiàn)doGet和/或doPost方法,用于處理HTTP請求和生成HTTP響應。
        5. 配置Servlet容器:
          • 配置Servlet容器,告訴它在哪里找到你的Web應用程序。
          • 在Tomcat中,你需要配置server.xml文件,添加一個新的<Context>元素,指向你的項目目錄。
        6. 部署和運行:
          • 將你的JavaWeb項目部署到Servlet容器中。
          • 啟動Servlet容器,查看你的JavaWeb應用程序是否成功運行。
        7. 學習HTML和基本前端知識:
          • JavaWeb開發(fā)通常涉及與前端進行交互,因此學習HTML和基本的前端知識對于構(gòu)建用戶界面是很有幫助的。

          在完成上述步驟后,你就建立了一個基本的JavaWeb開發(fā)環(huán)境,并且能夠開始編寫和部署簡單的Web應用程序。從這里開始,你可以深入學習JavaWeb的各個方面,包括Servlet、JSP、數(shù)據(jù)庫連接等,以構(gòu)建更復雜和功能豐富的Web應用程序。

          五、網(wǎng)頁搭建基礎

          網(wǎng)頁搭建是學習JavaWeb的基礎,主要包括HTML、CSS和JavaScript等基礎知識。通過學習這些基礎知識,你可以快速搭建出基本的網(wǎng)頁。

          六、JavaWeb核心技術(shù)

          JavaWeb 是使用 Java 技術(shù)進行 Web 開發(fā)的一種方式,它涵蓋了多個核心技術(shù)和框架。以下是 JavaWeb 的一些核心技術(shù):

          1. Servlet:
          • Servlet 是運行在服務器端的 Java 應用程序,主要用于處理客戶端的請求并生成響應。
          • Servlet 繼承自 javax.servlet.Servlet 接口,通過覆蓋 doGet 和 doPost 等方法來處理不同類型的 HTTP 請求。
        8. JSP (JavaServer Pages):
          • JSP 允許在 HTML 頁面中嵌入 Java 代碼,它最終會被翻譯成 Servlet。
          • JSP 提供了簡化開發(fā)的方式,允許開發(fā)人員在頁面中使用標簽庫來調(diào)用 JavaBean 等組件。
        9. Servlet容器:
          • Servlet 容器是一個 Web 服務器或應用服務器組件,負責管理 Servlet 的生命周期、請求和響應。
          • 常見的 Servlet 容器包括 Apache Tomcat、Jetty 和 WildFly。
        10. JavaBeans:
          • JavaBeans 是一種可重用的 Java 組件,通常用于在 Web 應用程序中封裝數(shù)據(jù)和業(yè)務邏輯。
          • 在 JavaWeb 中,JavaBeans 可以被用于從數(shù)據(jù)庫中獲取數(shù)據(jù)、在頁面中展示數(shù)據(jù)等任務。
        11. JDBC (Java Database Connectivity):
          • JDBC 是 Java 用于與數(shù)據(jù)庫進行交互的 API。
          • 在 JavaWeb 開發(fā)中,使用 JDBC 可以連接數(shù)據(jù)庫、執(zhí)行 SQL 查詢和更新等操作。
        12. JPA (Java Persistence API):
          • JPA 是 Java 用于對象關系映射(ORM)的 API,簡化了 Java 對象與數(shù)據(jù)庫表之間的映射。
          • Hibernate、EclipseLink 等框架實現(xiàn)了 JPA 規(guī)范,使得持久化操作更加方便。
        13. Spring框架:
          • Spring 是一個綜合性的 Java 開發(fā)框架,提供了依賴注入、面向切面編程、事務管理等功能。
          • Spring 的模塊中有 Spring MVC 用于構(gòu)建 Web 應用,Spring Boot 則簡化了 Spring 應用程序的搭建。
        14. Struts框架:
          • Struts 是一個基于 MVC 模式的 Web 應用框架,用于簡化開發(fā)復雜的 Web 應用程序。
          • Struts 的核心是一個控制器,負責接收用戶請求,并將其分發(fā)給相應的處理器(Action)。
        15. Web Services:
          • JavaWeb 中常用的 Web 服務技術(shù)包括 SOAP(Simple Object Access Protocol)和 REST(Representational State Transfer)。
          • JAX-RS(Java API for RESTful Web Services)是 Java EE 中用于構(gòu)建 RESTful Web 服務的 API。
        16. Security:
          • JavaWeb 應用程序的安全性是至關重要的。Java 提供了一些安全機制,例如 Java Authentication and Authorization Service (JAAS) 和 Java Security Architecture。

          以上是 JavaWeb 的一些核心技術(shù),這些技術(shù)一起構(gòu)成了一個完整的 JavaWeb 開發(fā)生態(tài)系統(tǒng)。開發(fā)人員可以根據(jù)項目需求選擇適當?shù)募夹g(shù)和框架來構(gòu)建穩(wěn)健、高效的 Web 應用程序。

          七、實踐項目

          實踐項目是學習JavaWeb的重要環(huán)節(jié),你可以選擇以下項目進行實踐:

          1. 創(chuàng)建一個簡單的Web應用程序,包括用戶注冊、登錄和信息展示等功能;
          2. 實現(xiàn)一個博客網(wǎng)站,包括文章列表、評論和發(fā)布等功能;
          3. 與第三方API進行交互,實現(xiàn)一個基于API的移動應用程序。

          通過實踐項目,你可以更好地掌握JavaWeb技術(shù),并提高自己的編程能力和團隊協(xié)作能力。

          八、總結(jié)與展望

          通過本文的介紹,相信你已經(jīng)對從網(wǎng)頁搭建入門到JavaWeb有了更深入的了解。要想成為一名優(yōu)秀的JavaWeb開發(fā)者,你需要不斷學習、實踐和總結(jié)。同時,隨著技術(shù)的不斷發(fā)展,你需要不斷關注新技術(shù)和趨勢,并努力提升自己的技能水平。希望本文能夠幫助你成功邁向后端工程師的高階之路!

          .把JSP頁面放在WEB-INF目錄下,存放在此目錄或者它的子目錄里的任何東西都受到了保護。

          2.使用servlet過濾器過濾對jsp頁面的請求。

          import	javax.servlet.*;	
          import javax.servlet.http.HttpServletRequest; 
          import javax.servlet.http.HttpServletResponse;
          import javax.servlet.http.HttpSession; 
          import java.io.IOException; 
          import java.io.Writer;
          public class AdminsessionFilter implements Filter {
          @Override
          public void init(FilterConfig filterConfig)throws ServletException {
          }
          @Override
          public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
          throws IOException,ServletException
          
          {
          
          	HttpServletRequest httpServletRequest=(HttpServletRequest)request;
          	HttpServletResponse httpServletResponse=(HttpServletResponse)response;
          	
          	String url=httpServletRequest.getRequestURI(); 
          	if(url!=null && url.endsWith(".jsp")){
          		String contextPath=httpServletRequest.getContextPath();
          		httpServletResponse.sendRedirect(contextPath+"/index.html");
          		return;
          	}
          	chain.doFilter(httpServletRequest,httpServletResponse);
          }
          
          @Override
          public void destroy(){
          }
          
          
          }

          3.在部署文件web.xml中使用安全限制.配置如下:

          SP指令是指:用于設置JSP頁面相關屬性的一個語法命令,例如:設置頁面編碼字符集、導入其他包等等。JSP中提供了三個指令,分別是:page指令、include指令、taglib指令。其中page指令用于設置JSP頁面屬性,include指令用于引入其他的JSP文件,taglib指令用于引入標簽庫。這一小節(jié)內(nèi)容介紹include指令的使用。

          1.1、include指令作用

          include指令作用:將指定的文件引入到當前JSP頁面里面。include指令會將引入的文件內(nèi)容嵌入到當前JSP頁面中的對應位置。

          <%@ include file="文件的相對路徑" %>

          案例代碼:

          • 創(chuàng)建一個header.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
              <title>這是HTML頭部</title>
          </head>
          • 創(chuàng)建一個include.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <%-- 引入頭部文件 --%>
          <%@ include file="header.jsp" %>
          <body>
          
          <div style="background-color: cadetblue">
              這是正文內(nèi)容區(qū)域
          </div>
          
          <%-- 引入底部文件 --%>
          <%@ include file="footer.html" %>
          </body>
          </html>
          • 創(chuàng)建一個footer.jsp文件。
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <div style="background-color: antiquewhite;">
            這是footer底部內(nèi)容區(qū)域
          </div>

          啟動Tomcat容器,瀏覽器訪問http://localhost:8080/servlet/include.jsp,結(jié)果如下:

          1.2、include指令的本質(zhì)

          include指令的本質(zhì)是什么呢???我們來查看下編譯之后的Java源代碼,找到上面include.jsp文件編譯之后的源文件,如下所示:

          /*
           * Generated by the Jasper component of Apache Tomcat
           * Version: Apache Tomcat/8.5.98
           * Generated at: 2024-02-25 05:06:41 UTC
           * Note: The last modified time of this file was set to
           *       the last modified time of the source file after
           *       generation to assist with modification tracking.
           */
          package com.gitcode.servlet;
          
          import javax.servlet.*;
          import javax.servlet.http.*;
          import javax.servlet.jsp.*;
          
          public final class include_jsp extends org.apache.jasper.runtime.HttpJspBase
              implements org.apache.jasper.runtime.JspSourceDependent,
                           org.apache.jasper.runtime.JspSourceImports {
          
            private static final javax.servlet.jsp.JspFactory _jspxFactory=  javax.servlet.jsp.JspFactory.getDefaultFactory();
          
            private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
          
            static {
              _jspx_dependants=new java.util.HashMap<java.lang.String,java.lang.Long>(2);
              _jspx_dependants.put("/footer.jsp", Long.valueOf(1708837593266L));
              _jspx_dependants.put("/header.jsp", Long.valueOf(1708837593271L));
            }
          
            private static final java.util.Set<java.lang.String> _jspx_imports_packages;
          
            private static final java.util.Set<java.lang.String> _jspx_imports_classes;
          
            static {
              _jspx_imports_packages=new java.util.HashSet<>();
              _jspx_imports_packages.add("javax.servlet");
              _jspx_imports_packages.add("javax.servlet.http");
              _jspx_imports_packages.add("javax.servlet.jsp");
              _jspx_imports_classes=null;
            }
          
            private volatile javax.el.ExpressionFactory _el_expressionfactory;
            private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;
          
            public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
              return _jspx_dependants;
            }
          
            public java.util.Set<java.lang.String> getPackageImports() {
              return _jspx_imports_packages;
            }
          
            public java.util.Set<java.lang.String> getClassImports() {
              return _jspx_imports_classes;
            }
          
            public javax.el.ExpressionFactory _jsp_getExpressionFactory() {
              if (_el_expressionfactory==null) {
                synchronized (this) {
                  if (_el_expressionfactory==null) {
                    _el_expressionfactory=_jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
                  }
                }
              }
              return _el_expressionfactory;
            }
          
            public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {
              if (_jsp_instancemanager==null) {
                synchronized (this) {
                  if (_jsp_instancemanager==null) {
                    _jsp_instancemanager=org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
                  }
                }
              }
              return _jsp_instancemanager;
            }
          
            public void _jspInit() {
            }
          
            public void _jspDestroy() {
            }
          
            public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
                throws java.io.IOException, javax.servlet.ServletException {
          
              final java.lang.String _jspx_method=request.getMethod();
              if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
                response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允許 GET、POST 或 HEAD。Jasper 還允許 OPTIONS");
                return;
              }
          
              final javax.servlet.jsp.PageContext pageContext;
              javax.servlet.http.HttpSession session=null;
              final javax.servlet.ServletContext application;
              final javax.servlet.ServletConfig config;
              javax.servlet.jsp.JspWriter out=null;
              final java.lang.Object page=this;
              javax.servlet.jsp.JspWriter _jspx_out=null;
              javax.servlet.jsp.PageContext _jspx_page_context=null;
          
          
              try {
                response.setContentType("text/html;charset=UTF-8");
                pageContext=_jspxFactory.getPageContext(this, request, response,
                			null, true, 8192, true);
                _jspx_page_context=pageContext;
                application=pageContext.getServletContext();
                config=pageContext.getServletConfig();
                session=pageContext.getSession();
                out=pageContext.getOut();
                _jspx_out=out;
          
                out.write('\r');
                out.write('\n');
                out.write('\r');
                out.write('\n');
                out.write("\r\n");
                out.write("<html>\r\n");
                out.write("<head>\r\n");
                out.write("    <title>這是HTML頭部</title>\r\n");
                out.write("</head>");
                out.write("\r\n");
                out.write("<body>\r\n");
                out.write("\r\n");
                out.write("<div style=\"background-color: cadetblue\">\r\n");
                out.write("    這是正文內(nèi)容區(qū)域\r\n");
                out.write("</div>\r\n");
                out.write("\r\n");
                out.write('\r');
                out.write('\n');
                out.write("\r\n");
                out.write("<div style=\"background-color: antiquewhite;\">\r\n");
                out.write("  這是footer底部內(nèi)容區(qū)域\r\n");
                out.write("</div>");
                out.write("\r\n");
                out.write("</body>\r\n");
                out.write("</html>");
              } catch (java.lang.Throwable t) {
                if (!(t instanceof javax.servlet.jsp.SkipPageException)){
                  out=_jspx_out;
                  if (out !=null && out.getBufferSize() !=0)
                    try {
                      if (response.isCommitted()) {
                        out.flush();
                      } else {
                        out.clearBuffer();
                      }
                    } catch (java.io.IOException e) {}
                  if (_jspx_page_context !=null) _jspx_page_context.handlePageException(t);
                  else throw new ServletException(t);
                }
              } finally {
                _jspxFactory.releasePageContext(_jspx_page_context);
              }
            }
          }

          通過上面源代碼,可以看到,使用include指令引入的兩個文件,最終都會將兩個文件中的內(nèi)容直接嵌入到當前include.jsp文件里面,如下所示:

          所以include指令的本質(zhì)就是將引入文件中的內(nèi)容,直接拼接到當前JSP頁面的對應位置。這里也就會存在一個問題,引入的JSP文件中,不能存在和當前JSP頁面相同的變量名稱,因為變量名稱相同會導致編譯失敗。另外,使用include指令引入其他的JSP文件時候,只會生成訪問的那個JSP文件的源代碼,被引入的JSP文件不會生成對應的源代碼。

          以上,就是include指令的使用及其本質(zhì)。

          今天就到這里,未完待續(xù)~~


          主站蜘蛛池模板: 国产一区二区精品久久凹凸| 日韩精品一区二区三区中文3d| 日韩欧美一区二区三区免费观看 | 精品成人一区二区三区免费视频| 免费萌白酱国产一区二区三区| 在线成人综合色一区| 久久久久久免费一区二区三区| 日韩一区二区三区在线精品| 天堂一区人妻无码| 无码丰满熟妇一区二区| 亚洲色精品三区二区一区| 日韩精品无码免费一区二区三区| 国产一区二区精品久久凹凸| www一区二区三区| 亚洲国产综合精品一区在线播放| 无码人妻aⅴ一区二区三区有奶水 人妻夜夜爽天天爽一区 | 亚洲愉拍一区二区三区| 亚洲天堂一区二区三区| 麻豆AV一区二区三区久久 | 在线精品国产一区二区三区| 日本一区二区三区精品国产| 国产一区二区三区不卡在线观看| 精品无码国产一区二区三区麻豆| 亚洲一区免费视频| 国产美女一区二区三区| 亚洲一区二区三区精品视频| 久久精品免费一区二区| 亚洲综合av一区二区三区| 亚洲另类无码一区二区三区| 无码人妻精品一区二区三区9厂 | 怡红院一区二区三区| 日韩久久精品一区二区三区 | 精品一区二区三区免费观看 | 精品一区二区三区AV天堂| 国产视频一区二区| 精品国产毛片一区二区无码 | 伊人激情AV一区二区三区| 午夜天堂一区人妻| 精品国产一区二区三区香蕉| 99国产精品欧美一区二区三区| 国产一区二区三区电影|