前提・実現したいこと
Webページにログイン機能を作成する。
クライアントサイドではHTMLとTypeScriptを用います。
画面から入力されたユーザーIDとパスワードをTypeScriptでbodyに格納します。
HttpClientのpostを用いて
第一引数=「http://localhost:8080/JAX-RSアプリケーションのルートパス/目標メソッドへのJAX-RSアプリケーションのルートパスからの相対パス」
第二引数=「画面から入力されたユーザIDとパスワードを入力した変数body」
を入れてサーバーサイドに受け渡し、サーバーサイド(java)でそれを受け取り処理をしたい。
発生している問題・エラーメッセージ
サーバーサイドに情報を送れない。
該当のソースコード
サーバーサイド
java
1package java.service.Login; 2 3import java.dto.UserInfo; 4import java.io.IOException; 5import java.io.InputStream; 6import java.io.OutputStream; 7import java.lang.annotation.Annotation; 8import java.lang.reflect.Type; 9import java.sql.SQLException; 10import java.util.HashMap; 11import java.util.Map; 12 13import javax.inject.Inject; 14import javax.servlet.http.HttpServletRequest; 15import javax.ws.rs.ApplicationPath; 16import javax.ws.rs.Consumes; 17import javax.ws.rs.GET; 18import javax.ws.rs.POST; 19import javax.ws.rs.Path; 20import javax.ws.rs.Produces; 21import javax.ws.rs.WebApplicationException; 22import javax.ws.rs.core.MediaType; 23import javax.ws.rs.core.MultivaluedMap; 24import javax.ws.rs.ext.MessageBodyReader; 25import javax.ws.rs.ext.MessageBodyWriter; 26import javax.ws.rs.ext.Provider; 27 28@ApplicationPath("Project") 29@Provider 30@Path(value="Login") 31public class LoginContoroller implements MessageBodyReader<Object>,MessageBodyWriter<Object> { 32 33 @Inject 34 private HttpServletRequest request; 35 36 @Inject 37 private LoginManegementService loginManegementService; 38 39 @Path(value = "firstLogin") 40 @POST 41 @Consumes(MediaType.APPLICATION_JSON ) 42 @Produces(MediaType.APPLICATION_JSON ) 43 public UserInfo firstlogin(UserInfo indto) throws ClassNotFoundException, SQLException { 44 indto = (UserInfo) request; 45 UserInfo returnValue = loginManegementService.firstLogin(indto); 46 return returnValue; 47 } 48}
クライアントサイドでログイン時に呼び出されるサービスクラス
bodyには以下のようなjson形式でユーザIDとパスワードが入力されている。
export interface UserInfo {
userID?:Number,
userName?:string,
userGender?:string,
userBirthday?:string,
userNote?:string,
userBlood?:string,
password?:string,
userDeleteFlag?:string
}
TypeScript
1import { HttpClient } from '@angular/common/http'; 2import { UserInfo } from './home.component.d'; 3import { Injectable } from '@angular/core' 4 5import { HomeComponent } from './home.component' 6import { Observable } from 'rxjs'; 7import { Router } from '@angular/router'; 8 9@Injectable() 10export class HomeService{ 11 userInfo; 12 constructor( 13 private http: HttpClient, 14 private router: Router 15 ){} 16 17 insertTouroku(body: UserInfo){ 18 this.router.navigate(['heroes']); 19 return this.http.post('http://localhost:8080/Project/Login/firstLogin',body); 20 } 21}
試したこと
補足情報(FW/ツールのバージョンなど)
Spring