サーブレット&JSPの| 3:アイデアの下のMVC開発プロジェクト

 

ディレクトリ

世界でサーブレット&JSPのMVCパターン:

まず、JavaWebプロジェクトを作成し、完全なHTMLページ

プロジェクトを作成します。1. 

2、準備ホーム側 

第二に、サーブレットにマッピングされたweb.xml構成ファイル、URL

第三に、Javaサーブレットクラスを実装します

1、サーブレットのモデルを作成

2、Javaサーブレットクラスを実装するために、

第四には、対応するJSPビューファイルを実装します

終わり 



世界でサーブレット&JSPのMVCパターン:

コントローラ(制御)でサーブレット、JSPの表示画面(ビュー)、プレーンJavaクラス・モデル(モデル)。

これらのサービス(要求+応答)のそれぞれの後ろに、それはモードのMVCであるべきである、式:

より具体的に:

ユーザーの問題ブラウザからの要求が、ウェブサーバダイナミックディスカバリ要求であるHTTPプロトコルを介してウェブサーバに送信され、これは、Tomcatコンテナに要求を処理します。Tomcatコンテナ、命令に対応するサーブレットの.classファイルを見つけるそのサービス()関数の実行を開始します。この操作の過程では、要求が上を通過達成するためのJavaクラス・モデルと呼ばれる、との結果がJSPファイルを通じて要求に伝え、これは最終的に利用者に返却容器を使用して、JSPページのtomcat。


この記事では主にアイデアの開発環境下での開発プロジェクトのMVCパターンに慣れ始めるための非常に簡単なJavaWebアプリケーションを作成します。メイン注:TomcatのサーブレットとJSPコンテナ管理コンポーネントでは、どのように我々はアプリケーションをデプロイします。

注:JSPはそれのJavaコードを、挿入した後、実際のhtmlページです! 


まず、JavaWebプロジェクトを作成し、完全なHTMLページ

プロジェクトを作成します。1. 

まず、JeffChangのコンサートという名前のJavaWebのアイデアで新しいプロジェクトを作成する権利。:特定の操作は、参照することができIDEA設定項目JavaWeb

このプロジェクトは、主にユーザーがフォーム結果ページは、ユーザー年度中の都市どんな情報コンサートを言って、ポップアップ表示されます提出した後、最初の11のワールドツアー、家は、年を選択するためのフォームを持っていますクエリ情報張信哲(ジェフ・チャン)に使用されています。とてもクール!

2、準備ホーム側 

変更したindex.jsp次のように、ファイルを(これは私たちのプロジェクトのデフォルトページです):

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
    <title>JeffChang's Concert</title>
</head>

<body>
<h1 align="center">Welcome to JeffChang's Concert Page!</h1>
<h2 align="center">Year Select Page</h2>
<form method="POST" action="query.do">   <!-- action即当用户提交这个表单时,将传递给url名为query.do的servlet -->
    Select year:
    <p>
        <!-- 创建一个下拉菜单-->
        <select name="year" size="1">
            <option value="2018"> 2018 </option>
            <option value="2019"> 2019 </option>
            <option value="2020"> 2020 </option>
        </select>
    <br><br>
    <div style="text-align: center;">
        <input type="SUBMIT">
    </div>
</form>
</body>

</html>

書かれた後に間違っている場合は、直接の実行を確認します。次のようにWebページが表示されます:

 

フォームを送信するために年を選択し、404❗があるでしょう。私たちは、あなたがフォームを送信するときに、Tomcatはサーブレットにaction属性ポイントにリクエストを渡しますが、見つけることができない、サーブレットにフォームのaction属性ポイントを認識していなかったので、とても404があります。


第二に、サーブレットにマッピングされたweb.xml構成ファイル、URL

web.xmlファイルは、コンテナTomcatの展開ファイルです。ユーザーがURLへのリクエストがWebサーバに渡され送信すると、URLがTomcatでそれに応じて対応するための特定のサーブレットにマッピングされます。

web.xmlファイルのコードは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<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">

    <servlet>
        <!-- 对应mapping中某一个servlet的内部名 -->
        <servlet-name>name1</servlet-name>
        <!-- 当收到请求时,要调用的Java类的相对路径(相对classes文件) -->
        <servlet-class></servlet-class>
    </servlet>

    <servlet-mapping>
        <!-- 为了方便部署,给这个servlet取一个内部名 -->
        <servlet-name>name1</servlet-name>
        <!-- 在index.jsp页面中对应的某表单action属性 -->
        <url-pattern>/query.do</url-pattern>
    </servlet-mapping>

</web-app>

私たちは、サーブレットクラス--Java対応が書かれていないので、サーブレット・クラスは、参加しないことに注意してください。それは、後に追加されます。

この場合、単にフォームを送信しようとすると、時間を選択し、それを実行します。

この時点では500が404の前に文句を言うが、ありません!私たちは、サーブレットのURLとのマッピングを展開しているが、これはJavaサーブレットクラスを達成されていないので〜


第三に、Javaサーブレットクラスを実装します

1、サーブレットのモデルを作成

モデルMを表し、MVC、バックエンドの束純粋なJavaコードこのモデルを呼び出すためのJavaサーブレットクラスがされ、対応する結果を与えることが、利用者に送信された要求を計算するために実装しますだから、あなたはJavaサーブレットクラスを実装するには、対応するモデルを実装する必要があります。

プロジェクトの中のsrcディレクトリ、新しいクラスコンサートを作成し、getConcertListの実装:

import java.util.ArrayList;
import java.util.List;

public class Concert {
    private String time;  //演唱会的时间
    private String region;  //演唱会的地区
    private int num;  //巡演的场次

    public Concert() { }
    
    public Concert (int num, String time, String region) {
        this.num = num;
        this.region = region;
        this.time = time;
    }

    public List getConcertList(String year) {
        List concertList = new ArrayList();
        if(year.equals("2018")) {
            concertList.add(new Concert(1,"2018-10-13","北京-五棵松体育馆"));
            concertList.add(new Concert(2,"2018-10-14","北京-五棵松体育馆"));
            concertList.add(new Concert(3,"2018-11-02","澳门-金光综艺馆"));
            concertList.add(new Concert(4,"2018-12-22","深圳-深圳湾体育中心"));
        }
        else if(year.equals("2019")) {
            concertList.add(new Concert(5,"2019-01-19","成都-成都大魔方"));
            concertList.add(new Concert(6,"2019-04-06","台北-小巨蛋"));
            concertList.add(new Concert(7,"2019-04-13","广州-广州宝能体育中心"));
            concertList.add(new Concert(8,"2019-04-27","南京-青奥体育公园体育馆"));
            concertList.add(new Concert(9,"2019-05-11","新加坡-室内体育馆"));
            concertList.add(new Concert(10,"2019-6-08","济南-济南奥体中心体育馆"));
            concertList.add(new Concert(11,"2019-6-22","苏州-苏州奥体中心体育馆"));
            concertList.add(new Concert(12,"2019-6-29","福州-海峡奥体综合体育馆"));
            concertList.add(new Concert(13,"2019-7-13","马来西亚-云顶云星剧场"));
            concertList.add(new Concert(14,"2019-7-14","马来西亚-云顶云星剧场"));
            concertList.add(new Concert(15,"2019-7-26","大连-大连体育中心体育馆"));
            concertList.add(new Concert(16,"2019-8-17","重庆-华熙文化体育中心"));
            concertList.add(new Concert(17,"2019-11-16","佛山-国际体育文化演艺中心"));
            concertList.add(new Concert(18,"2019-11-23","宁波-奥体中心体育馆"));
            concertList.add(new Concert(19,"2019-11-30","长沙-国际会展中心"));
            concertList.add(new Concert(20,"2019-12-14","上海-梅赛德斯奔驰体育中心"));
            concertList.add(new Concert(21,"2019-12-15","上海-梅赛德斯奔驰体育中心"));
            concertList.add(new Concert(22,"2019-12-22","沈阳-辽宁省体育馆"));
        } else if(year.equals("2020")) {
            concertList.add(new Concert(23,"2020-01-01","无锡-无锡市体育馆"));
            concertList.add(new Concert(24,"2020-04-28","英国-伦敦皇家阿尔伯特音乐厅"));
        }
        return concertList;
    }

    public String toString() {
        return "第"+this.num+"场 - " + this.time + " :    " + this.region + "\n";
    }
}

2、Javaサーブレットクラスを実装するために、

プロジェクトの中でsrcディレクトリ、新しいYearQueryServletクラス必要継承のHttpServletを作成し、doPostメソッドをオーバーライドします(super.doPost(REQ、RESP)を残していない。この文を)。そして、ビューJSPページに渡さConcert.javaモデルから情報を入手。

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public class YearQueryServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        /* 从模型获取答案*/
        String year = req.getParameter("year");  //从请求的信息(表单)内,找到name属性为year的表单,并获取用户提交的结果
        Concert concert = new Concert();
        List ans = concert.getConcertList(year);

        /* 将模型组件的贵大增加到请求对象 */
        req.setAttribute("styles", ans);  //为请求对象增加一个属性,其值为ans,供给jsp使用
        RequestDispatcher view = req.getRequestDispatcher("YearQueryResult.jsp"); //为jsp实例化一个请求分派器
        view.forward(req, resp); //使用请求分派器要求容器准备好jsp,并向jsp发送请求和响应
    }
}

サーブレットは、サーブレットクラスにJavaクラスのHttpServlet補数を対応する位置を継承しました。

<!-- 当收到请求时,要调用的Java类的相对路径(相对classes文件) -->
<servlet-class>YearQueryServlet</servlet-class>

 注:ちょうどモデルを使用してサーブレットを構築し、その結果は、JSPファイル転送ブリッジを来る、「YearQueryResult.jsp」ビューファイルが書かれていません。

この時点では、その後、プログラムを実行し、ちょうど一年を選択して、フォームを送信します。詳細に説明するように、404エラー、エラーページを見ることができます:/JeffChang%20Concert/YearQueryResult.jsp、すなわち、対応するファイルのjspビューを見つけることができません。[OK]を、その我々の橋が正常に構築されたが、ビューのJSPファイルの欠如されています。


第四には、対応するJSPビューファイルを実装します

YearQueryResult.jspファイル - JSPは、プロジェクトのwebディレクトリにファイルを作成します。我々は戻って、ビューのコードが書かれている必要があります。

ストレスを受けた先代:JSPは、実際のhtmlページで、次にJavaコードを挿入します執筆の時点でのJavaコードは、私たちは、<%>記号を書きます

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JeffChang's Concert</title>
</head>
<body>
<h1 align="center">张信哲第11轮世界巡回演唱会 - 未来式</h1>
<p>
    <%
        List styles = (List)request.getAttribute("styles");  //从请求对象得到一个属性(就是答案)
        /* 将结果显示在网页上 */
        Iterator it = styles.iterator();
        while (it.hasNext())
            out.println(it.next() + "<br>");
    %>
</p>
</body>
</html>

このアイテムのファイル、ディレクトリ、次のように: 


シンプルなMVCプログラムは、単に試験後、完了です。

直接、離れてから実行します -

2018,2019,2020は、それぞれ、以下の結果フォーム供給されます。

ええ!それは完了です -

 



終わり 

公衆への個人的な歓迎の注意ありませんが 手羽先はプログラミング」、ここで深刻な行儀のコード農業の一つがあります。

----は、最も行儀ブログERを行い、ほとんどの固体プログラマが行います----

慎重に、通常のノートに集約各記事を、書くことを目指し、更新をプッシュします -

ここに画像を挿入説明

 

公開された138元の記事 ウォン称賛63 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_43787043/article/details/104604359