基于JavaWeb動(dòng)態(tài)頁(yè)面的初期優(yōu)化架構(gòu)

在早期還沒(méi)提出MVC架構(gòu)理念,工程師們只是單純?yōu)榱耸勾a的邏輯結(jié)構(gòu)看上去清晰,以及為了編寫(xiě)的效率,引入了JSP文件,JSP的本質(zhì)依舊是將JSP文件編譯為Servlet類(lèi),然后再動(dòng)態(tài)加載程序代碼。

接下來(lái)的代碼都采用servlet規(guī)范來(lái)寫(xiě),將不再模擬servlet類(lèi)。

創(chuàng)建第一個(gè)JavaWeb應(yīng)用

servlet規(guī)范規(guī)定,JavaWeb應(yīng)用必須采用固定的目錄結(jié)構(gòu)

先不使用IDE自己手動(dòng)編寫(xiě)一個(gè)簡(jiǎn)單的JavaWeb應(yīng)用

以下是一個(gè)最簡(jiǎn)單的JavaWeb目錄結(jié)構(gòu):


javaweb目錄結(jié)構(gòu).jpg
1.新建一個(gè)login.htm文件:
<html>
<head>
<title>helloapp</title>
</head>
<body>
    <form name="loginForm" method="POST" action="dispatcher">
        <table>
            <tr>
                <td><div align="right">User Name:</div></td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td><div align="right">Password:</div></td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td><input type="submit" name="submit" value="submit"></td>
                <td><input type="reset" name="reset" value="reset"></td>
            </tr>
        </table>
    </form>
</body>
</html>

文件中表單通過(guò)action="dispatcher"指定將要跳轉(zhuǎn)到的uri地址:http://182.61.35.14:8000/helloapp/dispatcher

2.新建一個(gè)DispatcherServlet類(lèi):
package mypack;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class DispatcherServlet extends GenericServlet {
    private String target = "/hello.jsp";

    //響應(yīng)客戶(hù)端請(qǐng)求
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        request.setAttribute("USER", username);
        request.setAttribute("PASSWORD", password);
        
        ServletContext context = getServletContext();
        RequestDispatcher dispatcher = context.getRequestDispatcher(target);
        dispatcher.forward(request, response);
    }
}

通過(guò)RequestDispatcher dispatcher = context.getRequestDispatcher("/hello.jsp");將請(qǐng)求轉(zhuǎn)交給hello.jsp文件處理

//編譯命令為
javac -classpath /usr/local/tomcat/lib/servlet-api.jar -sourcepath src -d WEB-INF/classes/ src/mypack/DispatcherServlet.java
4.新建web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>mypack.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/dispatcher</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.htm</welcome-file>
    </welcome-file-list>
</web-app>

在web.xml中配置DispatcherServlet類(lèi)與uri的映射,讓客戶(hù)端能夠找到它。

4.新建hello.jsp文件:
<html>
  <head>
    <title>helloapp</title>
  </head>
  <body>
    <b>Hello: <%= request.getAttribute("USER") %></b>
  </body>
</html>

通過(guò)內(nèi)嵌的java語(yǔ)句request.getAttribute("USER");獲得動(dòng)態(tài)數(shù)據(jù),并返回到瀏覽器顯示。

//編譯命令為
忘了,網(wǎng)上找一下
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,974評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,993評(píng)論 19 139
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,376評(píng)論 11 349
  • 本章內(nèi)容: 映射請(qǐng)求到Spring控制器 透明地綁定表單參數(shù) 校驗(yàn)表單提交 狀態(tài)管理、工作流以及驗(yàn)證都是Web 開(kāi)...
    謝隨安閱讀 8,632評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,779評(píng)論 18 399