'Back-End/API'에 해당되는 글 11건

  1. 2019.07.22 HashMap 객체의 사용방법
  2. 2019.07.10 Query()객체, Sort()객체
  3. 2019.07.04 jQuery - html 객체
  4. 2019.07.01 이메일 관련 보내기 관련 API
  5. 2019.06.30 Spring API (@RequestMapping이 사용하는 속성)
  6. 2019.06.27 Spring API ( HttpServletRequest, HttpServletResponse )
  7. 2019.06.27 Spring API (@RequestBody와 ResponseEntity의 차이점)
  8. 2019.06.23 스프링 AOP JoinPoint 객체

HashMap 객체의 사용방법

Back-End/API 2019. 7. 22. 21:37

HashMap 객체의 사용방법


HashMap 객체는 데이터 타입으로 value만 넣는 ArrayList와 HashSet과는 달리 key값과 value값 두가지를


데이터타입으로 가진다는 것이다.



1. 객체 생성 공식 : HashMap<K, V> 레퍼런스명 = new HashMap<K, V>();


 K -> Key의 약어로 Value 값에 접근하기 위한 열쇠라는 의미를 가진다. Wrapper 클래스형이 와야한다.


 V -> Value의 약어로 Key 값을 통해 최종적으로 도달하는 값이다. Wrapper 클래스 형이 와야한다.




예를 들어, {봄, 여름, 가을, 겨울} 을 출력하는 프로그램을 만들고 싶을 때, 보통의 배열에서는 인덱스 값을 통해


0은 봄, 1은 여름, 2는 가을, 3은 겨울 이런식으로 접근하는데, 하지만 HashMap에서는 K를 통해 다음과 같이 값을


집어넣는다.



2. HashMap에 값을 집어넣는 put() 메소드


  

  HashMap<Integer, String>map1 = new HashMap<Integer, String>();

  //K에 int형, V에 string 형을 받아오는 객체 map를 생성함.


  map1.put( 1, "Spring" );

  //hashmap에 값을 집어넣는 put()메소드를 통해 K에 1을, V에 Spring를 넣었음.


  map1.put(2,"Summer");

  map1.put(3, "Fall");

  map1.put(4, "Winter");

  System.out.println(map1); 




출력값 :

  

  {1=Spring, 2=Summer, 3=Fall, 4=Winter}

 



3. HashMap에 값을 집어넣는 get() 메소드


  

  String mapVal1=map1.get(1);

  //여기서 get(1)의 1이란 숫자는 Key를 의미하고 get() 메소드는 Value를 출력하는 메소드 입니다.

  //그러므로 String형의 map1Val1 변수에 "Spring" 이 출력값으로 나온다.


  System.out.println(mapVal1);


  String map1Val2=map1.get(2);

  System.out.println(mapVal2);


  String map1Val3=map1.get(3);

  System.out.println(mapVal3);




출력값 :

  

  Spring

  Summer

  Fall

 



기타 사용법은 출처 참고



출처

https://knocktonote.tistory.com/9

:

Query()객체, Sort()객체

Back-End/API 2019. 7. 10. 10:14

예제문


1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
    public List<GuestbookDTO> getArticleList() {
        Query query=new Query(); //db에 명령내릴것들을 저장하는 객체인 query객체 생성
        query.with(new Sort(Sort.Direction.DESC, "post_date"));
        List<GuestbookDTO> list=
                (List<GuestbookDTO>)mongoTemplate.find(
                query, GuestbookDTO.class, COLLECTION_NAME);
        for(GuestbookDTO dto : list) {
            String content=dto.getContent();
            content= content.replace("\r\n""<br>");
            dto.setContent(content);
        }
        return list;
    }
cs


Query() 객체 


api 설명


1
2
3
4
5
6
7
8
public Query() {}
 
    /**
     * Creates a new {@link Query} using the given {@link CriteriaDefinition}.
     *
     * @param criteriaDefinition must not be {@literal null}.
     * @since 1.6
     */
cs


db에 명령을 내릴 쿼리를 저장하는 객체




Sory() 객체


api 설명


1
2
3
4
5
6
7
8
9
10
    public Sort(Direction direction, String... properties) {
        this(direction, properties == null ? new ArrayList<>() : Arrays.asList(properties));
    }
 
    /**
     * Creates a new {@link Sort} instance.
     * 
     * @param direction defaults to {@link Sort#DEFAULT_DIRECTION} (for {@literal null} cases, too)
     * @param properties must not be {@literal null} or contain {@literal null} or empty strings.
     */
cs


배열을 정렬시키는 객체 이 예제에서는 DESC가 붙었으므로 내림차순으로 배열을 정렬시키라는 의미이다.


:

jQuery - html 객체

Back-End/API 2019. 7. 4. 16:35

.html()

.html()은 선택한 요소 안의 내용을 가져오거나, 다른 내용으로 바꿉니다. .text()와 비슷하지만 태그의 처리가 다릅니다.

문법 1

HTML 태그를 포함하여 선택한 요소 안의 내용을 가져옵니다. 예를 들어

는 h1 요소의 내용을 변수 jb에 저장합니다.

문법 2

이전 내용을 지우고 새로운 내용을 넣습니다. 예를 들어

는 div 요소의 내용을 <h1>Lorem</h1>로 바꿉니다.




출처

https://www.codingfactory.net/10324#html

:

이메일 관련 보내기 관련 API

Back-End/API 2019. 7. 1. 15:26

javax.mail 패키지의 주요 클래스는

Session, Message, Address, Authenticator, Transport Store, Folder 등이 있다.

이들은 메시지를 만들고 전송하고 또 메일 서버에 있는 메시지를 꺼내오는데 개념적으로 중요한 역할을 한다. 이러한 클래스들의 주요 기능과 역할은 다음과 같다.


Session

메일 처리를 시작하는데 필요한 클래스로서 메일 처리 환경을 설정하고, 처리에 필요한
객체들을 생성해내는 역할을 한다. 메일 작업을 시작하려면 우선 Session 객체가 필요하다.
환경 설정을 위하여 java.util.Properties 를 사용하여 파라미터를 사용하며, 새로 객체를 생성하는 constructor는 private이기 때문에 사용할 수 없고, 다음과 같이 getDefaultInstance 메소드를 통하여 객체를 얻을 수 있다.


Properties props = new Properties(); // props 에 적절한 파라미터를 채움

Session session = Session.getInstance(props, null);


getDefaultInstance의 두번째 파라미터는 Authenticator인데 이는 차 후에 다루도록 하겠다.


Message

메일의 메시지를 의미하는 클래스로서 수신자/송신자/유형 등 헤더 부분과 본문 부분등 을 처리할 수 있도록 만들어진 클래스이다. 메시지의 기초 부분을 의미하는 Part 인터페이스를
implement 하고 있으며 Part는 메시지가 갖추어야한 기본적 요소를 정의하고 있다. Message는 기본적으로 추상 클래스이므로 실제 이를 상속받아 구체적 인터넷 메일 메시지를 구현한 클래스를 사용하기 위해서는 javax.mail.internet.MimeMessage를 주로 사용한다.


다음은 간단한 메시지를 생성해내는 예제이다.

MimeMessage message = new MimeMessage(session);
message.setSubject("테스트 제목");
message.setText("테스트 메일 입니다.");


Address

메시지를 송/수신하는 메일 주소를 추상한 클래스이다. 이 클래스도 추상 클래스이므로
인테넷 메일을 주소 클래스를 사용하려면 javax.mail.internet.InternetAddress를 사용한다.

다음은 "xxx@javanuri.com"이라는 인터넷 주소를 InternetAddress클래스를 사용하한 객체로 만들어 Message의 setFrom 메소드를 이용하여 송신자를 표시하는 예제이다.


Address address = new InternetAddress("xxx@javanuri.com", "홍길동");
message.setFrom(address);


메일 메시지의 수신자를 지정하는데는 Message 클래스의 addRecipient 메소드를 사용하는데
이 메소드 역시 Address 객체를 파라미터로 받아들인다. 송신자의 구분은 Message 객체에
RecipientType 이라는 상수로 정의되어 있다. 다음은 송신자, 참조자, 숨김 참조자를 메시지에 지정하는 예제이다.

Address toAddr = new InternetAddress("xxx@javanuri.com");
Address ccAddr = new InternetAddress("
yyy@javanuri.com");
Address bccAddr = new InternetAddress("
zzz@javanuri.com");

message.addRecipient(Message.RecipientType.TO, toAddr);
message.addRecipient(Message.RecipientType.CC, ccAddr);
message.addRecipient(Message.RecipientType.BCC, bccAddr);


Authenticator

주로 네트웍이나 서버에 연결할 때 사용자 아이디 및 암호 확인에 사용되는 추상 클래스이다. 사용자 인증을 위하여 Authenticator 클래스를 사용하려면 이 클래스를 상속을 받아 자신만의 클래스를 만들어 인증 방법을 구현해야 한다. 주로 사용자 인증에 관한 자신만의 고유 방법이 있거나 사용자 아이디와 암호를 묻는 화면을 만들때 사용한다. 상속하는 클래스를 만들 때는Authoticator에 있는 getXXX() 메소드를 override 하면 된다.

get 메소드 중에서 getPasswordAuthentication()은 사용자 아이디와 암호가 있는
PasswordAuthentication 객체를 리턴하도록 되어 있는데 PasswordAuthentication 객체는 화면 또는 적절한 방법에 의하여 아이디와 암호를 얻은 후에 생성하여 리턴하면 된다.

Session 생성시에 Authenticator를 파라미터로 주면 session이 필요한 시점에 사용자 아이디와
암호를 묻을 수 있도록 응용프로그램을 작성할 수 있다. 다음은 MyAuthenicator라는 새로운
클래스를 Authenticator로부터 상속받아 만들었다고 가정하고 session을 생성하는 예제이다.

Properties props = new Properties();
Authenticator auth = new MyAuthenticator();
Session session = Session.getDefaultInstance(props, auth);


Transport

메세지를 최종적으로 전달하는 클래스이다. 이 클래스도 추상 클래스로서 구체적 구현은 프로토콜 마다 다르게 할 수 있도록 구성되어 있다. 하지만 인터넷 메일을 일반적으로 SMTP 프로토콜에 의하여 전달된다. 메시지를 기본 SMTP 프로토콜을 이용하여 전달하려면 static 메소드인 Transport.send(Message msg)를 이용하면 된다. 프로토콜에 의하여 메시지를 전달하려면 다음 예제와 같이 Session 객체의 getTransport 메소드를 이용한다.

Transport trans = session.getTransport("smtp");
trans.connect("
www.javanuri.com", "xxxx", "yyyy");
trans.sendMessage(message, message.getAllRecipients());
trans.close();


Store

메시지를 저장하고 있는 장소를 추상화한 클래스인데, 메시지 저장은 메일 서버에서 하게된다. Store는 메일 서버와 연결이 되어 있어 저장된 메시지를 Store 객체를 통하여 가져올 수 있다. 다음은 Session 객체에서 POP3 프로토콜을 이용하여 Store 객체를 가져와 서버와 연결하는 예제이다.

Store store = session.getStore("pop3");
store.connect(host, username, password);


Folder

메시지를 분류해 놓은 장소를 추상화한 클래스이다.

서버에 따라 메시지는 수신함 "INBOX", 발신함 "OUTBOX" 등 여러가지 폴더를 갖을 수 있다.

하지만 POP3 프로토콜을 "INBOX" 폴더만을 지원한다.

폴더는 메시지를 저장하고 있는 Store 객체 안에서 찾을 수 있다.

다음은 Store 객체로부터 "INBOX" 폴더를 가져와 그 안에 있는 메시지를 가져오는 예제이다.

Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();


Part

Message 와 BodyPart등의 메일을 이루는 부분들을 공통적 기반이되는 interface로서 내용과 그 내용에 대한 속성들로 이루어져 있다. 하나의 메일에는 여러 부분의 내용이 서로 형식을 달리하여 있을 수 있고 또 첨부 화일이나 자료가 여러가지가 있을 수 있다. 이러한 하나 하나의 구성요소가 Part라 볼 수 있고, 여러가지 형태가 복합되어 있는 것을 multipart라 한다. 이러한 메일 메시지의 기반을 이루고 있는 것이 바로 Part interface이다.


위에서 다룬 javax.mail 패키지들의 모두 추상 클래스이거나 인터페이스 이다.

이를 상속 받아 인터넷 메일 쪽으로 구현한 패키지는 javax.mail.internet 패키지이다.

한지만 javax.mail.internet 패키지에서도 구체적 MIME 형태의 메시지인 MimeMessage를 주로 다룬다. 즉 메시지 내용을 어떻게 구성하는지에 관한 클래스들이다. 메일에서 중요한 전송과 수신 즉 Transport와 Store에 관한 구현클래스는 없다. 기본적으로 Transport와 Store는 제 3의 제공자 (Provider)가 해당 프로토콜에 맞도록 구현하여 제공하도록 되어 있다. JavaMail 패키지에는 SUN사가 Provider가 되어 Transport와 Store 클래스를 상속받아 만든 com.sun.mail 패키지가 클래스 형태로 포함되어 있고 디폴트로 이 클래스를 사용하도록 설정되어 있다. 어떤 Provider가 제공하는 클래스들을 사용할 것인가는 Session 객체가 설정된 환경 및 properties를 가지고 결정을 한다. Session 객체는 다음 이름의 파일들을 읽어들여 Provider를 결정하고 제공하는 클래스들을 사용한다.

javamail.providers
javamail.default.providers

위의 파일들의 위치를 찾는 순서는 우선 JRE의 홈디렉토리, 다음의 Jar 파일의 META-INF 등의 순서로 다음과 같이 찾는다.

1. java.home/lib/javamail.X
2. META-INF/javamail.X
3. META-INF/javamail.default.X


다음의 JavaMail 패키지의 mail.jar안에 있는 META-INF/javamail.default.providers의 내용이다.
이러한 내용이 기본적으로 설정되어 있기 때문에 Session 객체는 com.sun.mail 패키지의 클래스들을 사용하는 것이다. 만일 제3의 Vendor가 제공하는 클래스를 사용하려면 다음 내용을 바꾸어주면 된다.

javamail.default.providers
====================================================

# JavaMail IMAP provider Sun Microsystems, Inc
protocol=imap; type=store; class=com.sun.mail.imap.IMAPStore; vendor=Sun Microsystems, Inc;
# JavaMail SMTP provider Sun Microsystems, Inc
protocol=smtp; type=transport; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc;
# JavaMail POP3 provider Sun Microsystems, Inc
protocol=pop3; type=store; class=com.sun.mail.pop3.POP3Store; vendor=Sun Microsystems, Inc



출처: https://jmoonyoung.tistory.com/entry/펌자바메일javamail-관련 [무녕이 스토리지]

:

Spring API (@RequestMapping이 사용하는 속성)

Back-End/API 2019. 6. 30. 10:35

@RequestMapping 어노테이션이란?


URL을 컨트롤러의 메소드와 맵핑할 때 사용하는 스프링 프레임워크의 어노테이션

(View <=> Controller)




@RequestMapping가 사용하는 속성


이름 

타입 

설명 

value

String[ ]

 URL 값으로 매핑 조건을 부여함 (default)

method

RequestMethod[ ]

 HTTP Request 메소드 값을 매핑 조건으로 부여

 사용 가능한 메소드는 GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE

params

String[ ] 

HTTP Request 파라미터를 매핑 조건으로 부여 

consumes 

String[ ] 

설정과 Content-Type request 헤더가 일치할 경우에만 URL이 호출됨 

produces

String[ ] 

설정과 Accept request 헤더가 일치할 경우에만 URL이 호출됨


:

Spring API ( HttpServletRequest, HttpServletResponse )

Back-End/API 2019. 6. 27. 18:19

-HttpServletRequest-


HttpServletRequest를 사용하면, 그 안에 있는 값을 받아올 수 있다.


예를 들어, 아이디, 비밀번호 등의 데이터를 컨트롤러로 보냈을 때,


HttpServletRequest 객체 안에 모든 데이터들이 들어가게 된다.



원하는 데이터를 꺼낼 때는 HttpServletRequest 객체 안의 메소드를 이용하면 된다.


getParameter( )



getParameter( ) 메소드는 반환타입이 String 타입이다.



예를 들어,


String id = httpServletRequest.getParameter("id");


httpServletRequest안에 있는 id값을 String타입으로 가져온다.




출처

https://hongku.tistory.com/118



==================================================================================================



-HttpServletResponse-


클라이언트에 데이터를 전송하기 위해서 사용함, 


이를 위하여 Response 객체의 setContentType( ) 와 getWriter( ) 메소드를 이용한다.


그 다음에 html을 작성하거나 다른 컨텐츠를 기록하거나 하는 I/O 작업을 하면 된다.


이 외에도 헤더 정보를 설정하거나, 오류를 발생시키거나, 쿠키를 추가할 때도 Response 객체를 사용한다.




 > jar파일을 전송한다면..

 public class CodeReturn extends HttpServlet{

 public void doGet(HttpServletRequest request, HttpServletResponse reponse) throws IOException{

response.setContentType("application/jar");    //MIME타입. 외우지말자

ServletContext ctx = getServletContext();

InputStream is = ctx.getResourceAsStream("/book.jar");  // 이 코드를 풀어보면 입력스트림으로  book.jar을 주세요.

                                                                                                // 인자값은 반드시 /로 시작.

OutputStream os = response.getOutputStream();

byte[] bytes = new byte[1024];

while(true){

int count = is.read(bytes);

out.write(bytes,0,count);

if(bytes == -1){

break;

}

}

os.flush();

os.close();

}




출처

https://mkkbest.tistory.com/entry/HttpServletRequest-%EA%B0%9D%EC%B2%B4-HttpServletResponse-%EA%B0%9D%EC%B2%B4

:

Spring API (@RequestBody와 ResponseEntity의 차이점)

Back-End/API 2019. 6. 27. 11:43

Spring API (@RequestBody와 ResponseEntity의 차이점)


 

Spring에서는 HttpEntity란 클래스를 제공하는데 이 클래스의 역할은 Http 프로토콜을 이용하는 통신의 header과


body 관련 정보를 저장할 수 있게끔 합니다. 그리고 이를 상속받은 클래스로 RequestEntity와 ResponseEntity가

존재한다.

즉, 통신 메시지 관련 header과 body의 값들을 하나의 객체로 저장하는 것이 HttpEntity 클래스 객체이고,

Request 부분일 경우 HttpEntity를 상속받은 RequestEntity가, Response 부분일 경우 HttpEntity를 상속받은

ResponseEntity가 하게 됩니다.

@ResponseBody나 ResponseEntity를 return 하는거나 결과적으로는 같은 기능이지만.. 그 구현 방법이 틀리다.

예를 들어 header 값을 변경시켜야 할 경우엔 @ResponseBody의 경우 파라미터로 Response 객체를 받아서

이 객체에서 header를 변경시켜야 하고,.. ResponseEntity에서는 이 클래스 객체를 생성한뒤 객체에서

header 값을 변경시키면 된다.

자세한것은 Spring API 문서를 참고하면 된다.




ResponseEntity API


1
2
3
4
5
6
7
8
9
public class ResponseEntity<T> extends HttpEntity<T> {
 
    private final Object status;
 
 
    /**
     * Create a new {@code ResponseEntity} with the given status code, and no body nor headers.
     * @param status the status code
     */
cs




@RequestBody API


1
2
3
4
5
6
7
8
9
10
11
12
13
public @interface RequestBody {
 
    /**
     * Whether body content is required.
     * <p>Default is {@code true}, leading to an exception thrown in case
     * there is no body content. Switch this to {@code falseif you prefer
     * {@code null} to be passed when the body content is {@code null}.
     * @since 3.2
     */
    boolean required() default true;
 
}
cs


'Back-End > API' 카테고리의 다른 글

Spring API (@RequestMapping이 사용하는 속성)  (0) 2019.06.30
Spring API ( HttpServletRequest, HttpServletResponse )  (0) 2019.06.27
스프링 AOP JoinPoint 객체  (0) 2019.06.23
서블릿 API  (0) 2019.04.30
java.io 패키지  (0) 2019.04.21
:

스프링 AOP JoinPoint 객체

Back-End/API 2019. 6. 23. 12:48

  

  스프링 AOP JoinPoint


  JoinPoint는 Spring AOP 혹은 AspectJ에서 AOP가 적용되는 지점을 뜻한다.


  해당 지점을 JoinPoint 라는 인터페이스로 나타낸다. 


  AOP 를 수행하는 메소드는 이 JoinPoint 인스턴스를 인자로 받는다.


  JoinPoint 인스턴스에서 조인 포인트 지점의 정보를 얻어내야 한다.



  

  시그니처(signature)란?


  객체가 선언하는 모든 연산은 연산의 이름, 매개변수로 받아들이는 객체들을, 연산의 시그니처라고 합니다. 



메소드 종류


      

      메소드 명

     

      설명 

      

      JoinPoint.getThis( )


      AOP 프록시 객체를 반환한다.

      

      JoinPoint.getTarget( )


      AOP가 적용된 대상 객체를 반환한다. 프록시가 벗겨진 상태의 객체이다.

      

      JoinPoint.getArgs( )


      JointPoint에 전단된 인자를 배열로 반환한다. ( 인자는 AOP 를 사용하는 메소드의 인자를 말함. )

      

      JoinPoint.getKind( )


      어떤 종류의 JoinPoint인지 문자열로 반환한다. 보통은 메소드 호출이므로 "method-execution"

      

      JoinPoint.getSignature( )


      Signature 객체 반환

      

      getName( )


      JointPoint의 이름을 반환한다. 메소드 JoinPoint이면 메소드 이름

      

      getDeclaringType( )


      JointPoint를 선언하고 있는 타입을 반환한다. 즉, JoinPoint가 메소드이면, 해당 메소드의 클래스를 반환한다.

      getDeclaringTypeName( )

      

      JoinPoint를 선언하고 있는 타입의 이름을 반환한다. 


      즉, JoinPoint가 메소드이면, 해당 메소드의 클래스 이름을 반환한다.


      Signature를 상속받은 MethodSignature 인터페이스의 구현체인 경우, 조인 포인트로 지정된 메소드를 바로 받을 수 있다.


      MethodSignature.getMethod( )

     

      JoinPoint가 메소드일 경우 해당 JoinPoint에 대한 java.lang.reflect.Method 객체 확보하기





출 처

http://egloos.zum.com/hyphen/v/1893002

'Back-End > API' 카테고리의 다른 글

Spring API ( HttpServletRequest, HttpServletResponse )  (0) 2019.06.27
Spring API (@RequestBody와 ResponseEntity의 차이점)  (0) 2019.06.27
서블릿 API  (0) 2019.04.30
java.io 패키지  (0) 2019.04.21
java.util.stream  (0) 2019.04.20
: