JAVA, JSP

기능적/비기능적 요구사항, post, get방식, jsp 문법 구조, include

suji0730 2024. 7. 15. 14:41

 

1) 요구사항 (Requirement) : 시스템이 갖춰야 할 요건

 

1. 기능적 요구사항 : 시스템이 제공하는 서비스, 시스템이 무엇을 하여야 하는가를 기술


- 입력 (유입된 데이터와 처리)
- 출력 (화면 디스플레이, 인쇄, 다른 시스템에 전달되는 정보)
- 저장 (시스템은 어떤 데이터를 저장하는가, 데이터베이스 관련)
- 컴퓨팅 (어떤 계산 또는 서비스가 이루어지는가)
- 타이밍과 동기화 (하드웨어 장치 제어, 리얼타임으로 작업을 수행하는 시스템에서 중요) 


2. 비기능적 요구사항 : 반드시 지켜져야 할 제약조건

1- 소프트웨어 품질 특성 측면 (성능, 신뢰성, 가용성, 사용성 등)
- 반응시간 : 탐색 결과가 1초 이내 나와야 함 
- 처리량 : 분당 트랜잭션 처리 수 
- 자원 사용량 : 시스템은 최대 ~ 메모리를 사용함
- 신뢰성 : 시스템이 고장없이 동작할 가능성
- 가용성 : 시스템이 항상 실행되고 준비된 상태에 있는 시간 ( ex) down time이 1분 이내여야 한다.)
- 고장에서의 회복 : 고장으로 인해 영향을 받는 최대 허용치 
- 유지보수성과 확장의 허용 
- 재사용성의 허용 

2- 시스템의 환경과 기술적 측면 
- 플랫폼 : 시스템이 동잘할 HW, OS  
- 사용기술 : 프로그래밍 언어, 프레임워크 

3- 프로젝트 계획과 개발 방법에 관한 측면 
- 사용하는 개발 프로세스
- 비용과 납기일 (하지만 이부분은 요구사항 명세보다는 개발 계약서, 별도의 프로젝트 계획서에 주로 명시) 

ex) 항공권 예약 시스템의 요구 사항 
- 항공편, 탑승객, 예약 입력 방법 결정 : 기능(입력)
- 티켓과 리포트에 어떤 정보를 표시할 지 결정 : 기능(출력)
- 요금 계산 방법 결정 : 기능(컴퓨팅)
- 여행사와 고객이 데이터베이스에 접근할 때 어떤 정보를 얻을 수 있는지 결정 : 기능(저장)
- 자주 탑승하는 고객을 서비스하기 위해 시스템을 확장할 수 있도록 설계 : 비기능(유지보수성)
- 시스템은 항상 사용가능해야함. 일주일에 2분정도의 down time만 허용 : 비기능(가용성)
- 항공편 출발 시각으로 정렬할 때 합병 정렬 알고리즘을 사용 : 기능 , 비기능 모두 아님 -> 상세 설계 

 

 

 

2) POST 방식

<form action="<%= request.getContextPath() %>/EX2/action.jsp" method="post">
	아이디 : <input type="text" name="userId">	<br/>
	비번 :  <input type="text" name="userPw">	<br/>
	권한 :  <input type="text" name="userLevel">	<br/>
	이름 :  <input type="text" name="userName">	<br/>
	이메일 :  <input type="text" name="userEmail">	<br/>
	<input type="submit" value="회원가입버튼">
</form>

 

- post 방식 한글처리
<%request.setCharacterEncoding("euc-kr"); %>

 

 

 

3) GET방식

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
action.jsp<br>

<%
String userId = request.getParameter("userId");
String userPw = request.getParameter("userPw");
String userLevel = request.getParameter("userLevel");
String userName = request.getParameter("userName");
String userEmail = request.getParameter("userEmail");
System.out.println(userId + "<-userId");
System.out.println(userPw + "<-userPw");
System.out.println(userLevel + "<-userLevel");
System.out.println(userName + "<-userName");
System.out.println(userEmail + "<-userEmail");

out.println(userId + "<-userId <br>");
out.println(userPw + "<-userPw <br>");
out.println(userLevel + "<-userLevel <br>");
out.println(userName + "<-userName <br>");
out.println(userEmail + "<-userEmail <br><br>");
%>
표현식 userId : <%= userId %><br>
표현식 userPw : <%= userPw %><br>
표현식 userLevel : <%= userLevel %><br>
표현식 userName : <%= userName %><br>
표현식 userEmail : <%= userEmail %><br>

<a href="<%= request.getContextPath() %>/EX2/getAction.jsp?userId=<%= userId %>&userPw=<%= userPw %>&userLevel=<%= userLevel %>&userName=<%= userName %>&userEmail=<%= userEmail %>">
get방식 요청 버튼</a>

 

 

- get방식 한글처리

Servers > Tomcat v9.0 Server at localhost-config > server.xml 63라인


    <Connector connectionTimeout="20000" maxParameterCount="1000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

-> <Connector connectionTimeout="20000" maxParameterCount="1000" port="8007" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="euc-kr" />

 

 

 

4) jsp 문법 구조

<% %> 자바코드 : scriptlet(스크립트릿)
<%@ %> 하나의 jsp 설정 : Directive(디렉티브)
<%= %> 변수에 담겨있는 값 또는 리턴값을 출력 : 표현식
<%! %> 메서드 선언부 -> 향후에는 자바코드로 빠지면 안 쓴다
<%-- --%> 주석 ( Ctrl + Shift + / )

 

 

5) include Directive(디렉티브) : 일부 소스코드를 포함시키는 개념

<%@ include file = "/module/top.jsp" %>