JSP クイック スタート、MVC パターンと 3 層アーキテクチャ、EL 式、JSTL タグ

1. コンセプトと機能

● コンセプト: Java Server Pages、Java サーバーページ
● HTML、JS、CSS などの静的コンテンツだけでなく、Jva コードの動的コンテンツも定義できる動的 Web テクノロジー
● JSP=HTML +Java
● JSP 機能: 開発を簡素化、本質的にはサーブレットである Servletr で HTML タグを直接出力することは避けてください。

2、JSP クイック スタート

1. JSP座標をインポートする

<dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
</dependency>

2. JSPファイルを作成する

3. HTML タグと Java コードを作成する

<body
<h1>hello jsp~</h1>
<% System.out.printf("jsp hello~"); %>
</body>

三、JSP原則

●コンセプト:Java Server Pages、Javaサーバーページ

●JSP=HTML+Java、開発を簡素化するために使用されます。

●JSPは本質的にはサーブレットです

JSPにアクセスされると、SPコンテナ(Tomcat)がJavaファイル(Servlet)に変換し、SPコンテナ(Tomcat)がそれをコンパイルして、最終的に外部にサービスを提供するのがこのバイトコードファイルです。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-LCbBe4jz-1653532347959) (C:\Users\可\AppData\Roaming\Typora\) typora-user-images\ image-20220519105736625.png)]

4、JSPスクリプト

● JSP スクリプトは、JSP ページで Java コードを定義するために使用されます
。 ● SP スクリプト カテゴリ:

1.<%…%>

コンテンツは _jspService() メソッドに直接配置されます。

例えば:

 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {
    
    

    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\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("    <title>Title</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");

    //1.接收用户名和密码
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    //2.调用MyBatis完成查询
    //2.1获取SqlSessionFactory对象
	//String resource = "mybatis-config.xml";
	//InputStream inputstream = Resources.getResourceAsStream(resource);
	//SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
    SqlSessionFactory sqlSessionFactory= SqlSessionFactoryUtils.getSqlSessionFactory();
    //2.2获取SqlSession对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //2.3获取Mapper
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    //2.4调用方法
    User user = userMapper.selectById(username, password);
    //2.5释放资源
    sqlSession.close();

2.<%=…%>

コンテンツは out.print() のパラメータとして out.print() に配置されます。

例えば:

      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("    <title>Title</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");

3.<%!..%>

コンテンツは _spService() メソッドの外側に配置され、クラスに直接組み込まれます。

public final class login_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {
    
    


        void show(){
    
    

        }
        String name = "zhangsan";

    
  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;

4. JSPの欠点

SP ページでは HTML タグと ava コードの両方を定義できるため、次のような問題が発生します。

1. ライティングの問題: 特に複雑なページ

2. 読み取りトラブル

3. 非常に複雑: 操作はさまざまな環境、JRE、JSP コンテナ、JavaEE に依存する必要があります。

4. メモリとディスクを占有します: JSP は自動的に生成され、java および .class ファイルはディスクを占有し、.class ファイルは実行時にメモリを占有します。

5. デバッグの難しさ: エラーの後、デバッグ用に自動生成された .java ファイルを見つける必要があります。

6. チームワークがうまくいかない: フロントエンド担当者は Java を知らず、バックエンド担当者は HTML に習熟していない

7.....

五、EL表現

Expression Language JSP ページの Java コードを簡素化するために使用される式言語

メイン関数: データの取得

構文:${expression}

${brands}

ブランドとしてキーを使用してドメインに保存されているデータを取得します

JavaWeb の 4 つのドメイン オブジェクト:

1.page: 現在のページが有効です

2.request:: 現在のリクエストが有効です

3.session: 現在のセッションが有効です

4.application: 現在のアプリケーションが有効です

これらから式で得られたデータが順番に検索されます見つかるまで4フィールド

6. JSTLタグ

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-unjmFXAG-1653532347961) (C:\Users\可\AppData\Roaming\Typora\) typora-user-images\ image-20220522165908513.png)]

1. jstl、標準の依存関係をインポートします。

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
</dependency>
<dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
<dependency>

2. <c:if>\ タグを学習し、新しい jstl-if.jsp ファイルを作成し、taglib タグ ライブラリをインポートします。

<%--
  Created by IntelliJ IDEA.
  User: 可
  Date: 2022/5/22
  Time: 17:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <c:if test="${status==1}">
        启用
    </c:if>
    <c:if test="${status==0}">
        禁用
    </c:if>
</body>
</html>

3. <c:forEach>\ タグを学習し、新しい jstl-foreach.jsp ファイルを作成し、taglib タグ ライブラリをインポートします。

<%--
  Created by IntelliJ IDEA.
  User: 可
  Date: 2022/5/23
  Time: 10:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<input type="button" value="新增">
<hr/>
<table border="2" cellspacing="" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
<c:forEach items="${brands}" var="brand">
            <tr align="center">
                <td>${brand.id}</td>
                <td>${brand.brandName}</td>
                <td>${brand.companyName}</td>
                <td>${brand.ordered}</td>
                <td>${brand.description}</td>
                <td>${brand.status==1 ? "启用" : "禁用"}</td>
                <td><a href="#">修改</a>&nbsp;&nbsp;<a href="#">删除</a></td>
            </tr>
</c:forEach>
</table>
</body>
</html>

4. <c:>タグのvarStatus="Nid"属性の設定値 ${brand.conut} は1から始まることを意味し、${Nid.index}は0から始まることを意味します

7、MVC モードと 3 層アーキテクチャ

MVCパターン

3層アーキテクチャ

データ アクセス層は、dao 層および永続化層とも呼ばれます。

[外部リンク画像の転送に失敗しました。ソース サイトには盗難防止リンク メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-KR4Lmv07-1653532347965) (C:\Users\可\AppData\Roaming\Typora) \typora-user-images\ image-20220523170024498.png)]

8. ケース

1. 環境を準備する

新しいモジュール ブランド デモを作成し、座標をインポートする
<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <!--导入jstl-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

        <!--Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>


        <!--JSP-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </build>
3 層アーキテクチャのパッケージ構造を作成する
データベーステーブルTBブランド
エンティティクラス ブランド
MyBatis基本環境

XML ファイルのバージョン 3 のタグ ヘッダーは次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
Mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <!--    起别名    -->
        <package name="cn.itheima.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--数据库连接池-->
            <dataSource type="POOLED">
                <!--数据库的连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///db1?useSSL=false&amp;useServerPrepStmts=true"/>
                <property name="username" value="root"/>
                <property name="password" value="nigaoxian+0128"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 扫描mapper -->
        <package name="com.itheima.mapper"/>
    </mappers>
</configuration>
BrandMapper.xml

Br と Mapper インターフェイス

おすすめ

転載: blog.csdn.net/weixin_48053866/article/details/124980054