SpringBootはSSMフレームワークとAjaxを統合します

1.SpringBootの概要

SpringBootは、Spring、SpringMVC、および関連する一般的なフレームワークをデフォルトで統合し、デフォルトで通常の構成を完了するコレクションです。構成に関して、SpringBootの哲学は「慣習は構成よりも大きい」です。使用の過程で、構成する必要はありませんが、SpringBootによって完成された構成値にも準拠します。

2.SpringBootプロジェクトを作成します

https://start.spring.ioを開き、ページにプロジェクトを作成するためのパラメーターを入力し、必要に応じて、追加する必要のある依存関係を確認し、[生成]ボタンをクリックしてプロジェクトをダウンロードします。

ダウンロードしたプロジェクト圧縮パッケージを解凍してプロジェクトフォルダーを取得します。プロジェクトフォルダーはWorkspaceに移動し、Eclipseで[インポート]> [既存のMavenプロジェクト]からプロジェクトをインポートします。

インポートするときは、現在のコンピューターがMavenサーバーに接続できることを確認してください。このプロジェクトでは、Mavenサーバーから多数の依存jarパッケージをダウンロードする必要があります。

プロジェクトが自動的に更新を開始しない場合は、プロジェクトを右クリックして[Maven]> [プロジェクトの更新]を選択し、ポップアップダイアログボックスで[強制更新...]をオンにして更新を試みます。それでも更新に失敗する場合は、依存しているスプリングブートのバージョンを下げることができます。

Eclipse Oxygen(4.7)以降を使用することをお勧めします。より低いバージョンのEclipseを使用している場合、pom.xmlファイルでMavenバージョンエラーが表示される場合があります。このエラーは無視してかまいませんが、プロジェクトの操作には影響しません。

3.SpringBootプロジェクトの構造

たとえば、作成されたプロジェクト構造は次のとおりです。

[Java Resources]
	[src/main/java]
		[cn.tedu.springboot]
			ServletInitializer.java
			SpringbootApplication.java
	[src/main/resources]
		[static]
		[templates]
		application.properties
	[src/test/java]
		[cn.tedu.springboot]
			SpringbootApplicationTests.java

注:上記のcn.tedu.springbootパッケージは、プロジェクトの作成時に設定されたグループとアーティファクトに従って決定され、現在のプロジェクトで設定されたコンポーネントスキャンのルートパッケージでもあります。したがって、後続のプログラミング中に、すべてのコンポーネントクラス(コントローラークラスなど)をこのパッケージまたはそのサブパッケージに配置する必要があります。

注:SpringbootApplicationクラスの名前は、プロジェクトの作成時に設定されたアーティファクトによっても決定されます。このクラスは、SpringBootプロジェクトのスタートアップクラスです。実行する必要がある場合は、このクラスでmain()メソッドを実行してください。

注:SpringBootプロジェクトにはTomcatが組み込まれています。スタートアップクラスが実行されると、プロジェクトは組み込みのTomcatにデプロイされます。

注:src / main / resourcesの下の静的フォルダーは、.html、.css、.js、写真などの静的リソースを保存するためのフォルダーです。

注:src / main / resourcesの下のtemplatesフォルダーは、テンプレートページを保存するために使用されます。たとえば、Thymeleafを使用する場合は、関連するテンプレートページをここに配置する必要があります。

注:src / main / resourcesの下にあるapplication.propertiesファイルはSpringBootプロジェクトの唯一の構成ファイルであり、すべてのカスタム構成はこのファイルで構成する必要があります。構成ファイルapplication.ymlを使用するSpringBootプロジェクトもいくつかあります。application.propertiesとの違いは、構成の構文のみであり、機能と位置はまったく同じです。

注:src / test / javaの下にcn.tedu.springbootパッケージがあります。このパッケージ名は、プロジェクトの作成時にも決定されます。SpringBootプロジェクトのすべてのユニットテストクラスは、このパッケージまたはサブパッケージに配置する必要があります。そうしないと、ユニットテストの実行時にSpring環境がロードされません。SpringbootApplicationTestsテストクラスでは、クラスの宣言ステートメントの前にある2つの注釈は、各ユニットテストクラスに追加する必要のある注釈でもあります。

4.静的WebページをSpringBootプロジェクトに追加します

src / main / resources / staticの下にindex.htmlを作成します。コンテンツは自分で設計できます。完了したら、プロジェクトを開始し(SpringbootApplicationクラスでmain()メソッドを実行)、ブラウザーを開いて、http:// localhost:8080 /にアクセスします。このページにアクセスできます!

index.htmlはデフォルトのウェルカムページのファイル名であるため、アクセス時にURLでhttp:// localhost:8080 /index.htmlを明示的に使用する必要はありません。

5.SpringBootプロジェクトの組み込みTomcatのポート番号を変更します

src / main / resourcesの下のapplication.propertiesに構成を追加します。

server.port=8888

HTTPプロトコルのデフォルトのポート番号は80です。ポート番号をこの値に変更することもできます。Linuxオペレーティングシステムを使用している場合、ポート80を使用するには、関連する権限設定が必要です。

6.SpringBootプロジェクトでリクエストを処理します

プロジェクトのルートパッケージcn.tedu.springbootの下にサブパッケージコントローラーを作成し、このサブパッケージにコントローラークラスHelloControllerを作成し、クラスの前に@RestControllerアノテーションを追加します。

package cn.tedu.springboot.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

}

@RestControllerは、@ Controller + @ResponseBodyと同等です。つまり、この注釈を追加した後、現在のクラスはコントローラークラスであり、現在のクラスで要求を処理するすべてのメソッドは応答本文です。これは、要求を処理する各メソッドの前に追加することと同じです。 @ResponseBody!@RestControllerは、SpringBootプロジェクトに固有の注釈ではありません。通常のSpringMVCプロジェクトでも使用できますが、個別に構成する必要があります。

注:SpringBootプロジェクトはデフォルトでSpringMVCのDispatcherServletを構成しており、マップされたパスは/です。したがって、SpringBootを使用して開発する場合、設計要求パスで.doをサフィックスとして使用する必要はありません。*

次に、コントローラークラスに処理要求を追加します。

@GetMapping("hello")
public String showHello() {
	return "Hello, <b>SpringBoot</b>!!!";
}

上記の@GetMappingは、@ RequestMapping(method = RequestMethod.GET)と同等です。つまり、制限要求メソッドはGETタイプの要求である必要があります。さらに、@ PostMappingがあります......

  1. SpringBootを使用してユーザー登録機能を開発する

7.1。フロントエンドページを作成する

通常の開発プロセスは最後のページになります!

src / main / resources / staticの下にユーザー登録ページを作成します。

7.2。コントローラーを使用して、要求を受信および処理します

ユーザーから送信された登録データの受信を容易にするために、最初に、cn.tedu.springboot.entity.Userユーザーデータのエンティティクラスを作成する必要があります。

cn.tedu.springboot.controller.UserControllerコントローラークラスを作成し、コントローラークラスの前に@RestControllerと@RequestMapping( "user")を追加します。

@RequestMapping("user")
@RestController
public class UserController {

}

次に、リクエストを受信して​​処理するメソッドを追加します。

@PostMapping("reg")
public void reg(User user) {
	// 目前无法确定注册成功与否,暂时使用void作为返回值类型
	
	System.err.println("UserController.reg()");
	System.err.println("\t" + user);
	
	// TODO 将用户数据写入到数据库中
}

フロントエンドページで、登録リクエストが/ user / regに送信されていることを確認します。正しい場合は、プロジェクトを開始し、ユーザーの登録データをサーバー側コントローラーに送信できるかどうかを確認します。

7.3。データベース接続

SpringBootプロジェクトには、デフォルトで統合データベースプログラミングに必要な依存関係がありません。プロジェクトの作成時に追加することも、プロジェクトが正常に作成された後にpom.xmlに関連する依存関係を追加することもできます。

MyBatisとMySQLへの依存関係は次のとおりです。

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.1</version>
</dependency>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

注:SpringBootプロジェクトにデータベース関連の依存関係を追加しても、データベース接続関連の情報を構成しない場合、SpringBootは開始時にデータベース関連の情報をロードするため、プロジェクトの開始時にエラーが報告されます。

次に、application.propertiesに構成を追加する必要があります。

spring.datasource.url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

データベース接続を構成する場合、driverClassNameを構成する必要はありません。SpringBootは、データベース接続のjarパッケージから自動的にそれを見つけます。

上記の構成を追加した後、構成値が間違っていても、プロジェクトの起動には影響しません。ただし、構成が時間内に正しいかどうかを確認する必要があります。ユニットテストでデータベース接続を試みることができます。接続できる場合、構成は正しいです。接続できない場合、構成が間違っているか、関連するjarパッケージが破損しています。

SpringbootApplicationTestsでユニットテストを記述して実行します。

@Autowired
private DataSource dataSource;

@Test
public void getConnection() throws SQLException {
	Connection conn = dataSource.getConnection();
	System.err.println(conn);
}

SpringBootユニットテストは実行前にプロジェクト全体の構成とSpring環境をロードするため、従来のSpringMVCプロジェクトでgetBean()を介して取得できるオブジェクトは、SpringBootプロジェクトで自動的にアセンブルできます。

7.4.MyBatisを介してデータを挿入する

cn.tedu.springboot.mapper.UserMapperインターフェイスを作成し、インターフェイスに抽象メソッドを追加します。

Integer insert(User user);

次に、インターフェイスファイルの場所を構成する必要があります。インターフェイスの宣言ステートメントの直前に@Mapperアノテーションを追加できます!このアプローチを使用する場合、各MyBatisインターフェイスはこの注釈を追加する必要があります。クラスを開始する前に、構成用に@MapperScan注釈を追加する別の方法があります。

@SpringBootApplication
@MapperScan("cn.tedu.springboot.mapper")
public class SpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}

}

src / main / resourcesの下にmappersという名前のフォルダーを作成します。これは、SQLステートメントを構成するためのXMLファイルを格納するために特別に使用され、このフォルダーの下にUserMapper.xmlファイルをコピーして貼り付けて構成します。

<mapper namespace="cn.tedu.springboot.mapper.UserMapper">

	<insert id="insert"
		useGeneratedKeys="true"
		keyProperty="id">
		INSERT INTO t_user (
			username, password,
			age, phone,
			email, is_delete,
			department_id
		) VALUES (
			#{username}, #{password},
			#{age}, #{phone},
			#{email}, #{isDelete},
			#{departmentId}
		)
	</insert>
	
</mapper>

SpringBootプロジェクトでは、XMLファイルの場所を構成する必要があり、application.propertiesに構成を追加する必要があります。

mybatis.mapper-locations=classpath:mappers/*.xml

完了後、ユニットテストを作成して実行します。

@Autowired
private UserMapper userMapper;

@Test
public void insert() {
	User user = new User();
	user.setUsername("boot");
	user.setPassword("1234");
	Integer rows = userMapper.insert(user);
	System.err.println("rows=" + rows);
}

「一意のユーザー名」を確認するために、ユーザーが登録を試みる前にユーザー名が登録されているかどうかを確認し、「ユーザー名に基づいてユーザーデータをクエリ」し、クエリ結果がnullかどうかを判断して、答えを判断できます。

したがって、UserMapper.javaインターフェイスを追加します。

User findByUsername(String username);

そして、UserMapper.xmlでSQLマッピングを構成します。

<select id="findByUsername"
	resultType="cn.tedu.springboot.entity.User">
	SELECT
		*
	FROM
		t_user
	WHERE
		username=#{username}
</select>

完了後も、ユニットテストを作成して実行する必要があります。

@Test
public void findByUsername() {
	String username = "root";
	User user = userMapper.findByUsername(username);
	System.err.println(user);
}

次に、上記の方法をコントローラーの要求を処理するプロセスに適用します。

@PostMapping("reg")
public JsonResult reg(User user) {
	System.err.println("UserController.reg()");
	System.err.println("\t" + user);
	
	JsonResult jsonResult = new JsonResult();
	
	// 检查该用户名是否已经被注册
	String username = user.getUsername();
	User result = userMapper.findByUsername(username);
	// 判断查询结果是否为null
	if (result == null) {
		// 将用户数据写入到数据库中
		userMapper.insert(user);
		jsonResult.setState(1);
	} else {
		// 用户名已经被注册
		jsonResult.setState(2);
		jsonResult.setMessage("您尝试注册的用户名(" + username + ")已经被占用!");
	}
	
	return jsonResult;
}

おすすめ

転載: blog.csdn.net/qq_37669050/article/details/102508588