1. IF문 쓴 일반방식
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05/userAgent.jsp</title>
</head>
<body>
<pre>
클라이언트 시스템을 파악하고,
해당 OS에 대한 정보를 alert 창으로 랜더링,
(당신의 OS는 "windows" 입니다.)
<%
String pattern = "당신의 OS 는 \"%s\" 입니다.";
String agent = request.getHeader("User-Agent");
agent = agent.toUpperCase();
String osName = null;
if(agent.contains("WINDOWS")){
osName = "윈도우";
}else if(agent.contains("ANDROID")){
osName = "안드로이드";
}else if(agent.contains("IPHONE")){
osName = "아이폰";
}else{
osName = "식별불가 OS";
}
String message = String.format(pattern, osName);
%>
</pre>
<script type="text/javascript">
alert('<%=message%>');
</script>
</body>
</html>
toUppercase();
문자열을 대문자로 변환해 반환합니다.
2.Map방식
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05/userAgent.jsp</title>
</head>
<body>
<pre>
클라이언트 시스템을 파악하고,
해당 OS에 대한 정보를 alert 창으로 랜더링,
(당신의 OS는 "windows" 입니다.)
<%
String pattern = "당신의 OS 는 \"%s\" 입니다.";
String agent = request.getHeader("User-Agent");
agent = agent.toUpperCase();
String osName = null;
Map<String, String> osMap = new HashMap<>();
osMap.put("WINDOWS","윈도우");
osMap.put("ANDROID","안드로이드");
osMap.put("IPHONE","아이폰");
osMap.put("UNKNOWN","식별불가 OS");
osName = osMap.get("UNKNOWN");
for( String key : osMap.keySet()){
osName = osMap.get(key);
if(osName!=null){
break;
}
}
String message = String.format(pattern, osName);
%>
</pre>
<script type="text/javascript">
alert('<%=message%>');
</script>
</body>
</html>
3.Enum방식-1
package kr.or.ddit.enumpkg;
public enum Oskind {
WINDOWS, ANDROID, IPHONE, UBUNTU, UNKNOWN ;
private String osName;
}
<%@page import="kr.or.ddit.enumpkg.Oskind"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05/userAgent.jsp</title>
</head>
<body>
<pre>
클라이언트 시스템을 파악하고,
해당 OS에 대한 정보를 alert 창으로 랜더링,
(당신의 OS는 "windows" 입니다.)
<%
String pattern = "당신의 OS 는 \"%s\" 입니다.";
String agent = request.getHeader("User-Agent");
agent = agent.toUpperCase();
String osName = null;
osName = Oskind.UNKNOWN.getOsName(); //초기값
for( Oskind os : Oskind.values()){
osName = os.getOsName();
if(osName!=null){
break;
}
}
String message = String.format(pattern, osName);
%>
<%=Oskind.IPHONE %>
</pre>
<script type="text/javascript">
alert('<%=message%> ');
</script>
</body>
</html>
4.Enum방식-2
<%@page import="kr.or.ddit.enumpkg.Oskind"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>05/userAgent.jsp</title>
</head>
<body>
<pre>
클라이언트 시스템을 파악하고,
해당 OS에 대한 정보를 alert 창으로 랜더링,
(당신의 OS는 "windows" 입니다.)
<%
String pattern = "당신의 OS 는 \"%s\" 입니다.";
String agent = request.getHeader("User-Agent");
String osName = Oskind.findOsName(agent);
String message = String.format(pattern, osName);
%>
<%=Oskind.IPHONE %>
</pre>
<script type="text/javascript">
alert('<%=message%> ');
</script>
</body>
</html>
package kr.or.ddit.enumpkg;
public enum Oskind {
WINDOWS("윈도우"), ANDROID("안드로이드"), IPHONE("아이폰"), UBUNTU("우본투"), UNKNOWN("식별불가OS") ;
private String osName;
private Oskind(String osName) {
this.osName = osName;
}
public String getOsName() {
return osName;
}
public static Oskind findOs(String agent) {
agent = agent.toUpperCase();
Oskind findedOs = Oskind.UNKNOWN;
String osName = null;
osName = Oskind.UNKNOWN.getOsName(); //초기값
for( Oskind os : Oskind.values()){
if(agent.contains(os.name())){
findedOs = os;
break;
}
osName = os.getOsName();
if(osName!=null){
break;
}
}
return findedOs;
}
public static String findOsName(String agent) {
Oskind findedOs = findOs(agent);
return findedOs.getOsName();
}
}
Enum Class인 Oskind 만들어서 jsp에서 Oskind 호출
Oskind에서 getOsName() 메서드를 호출해서 이름을 가져오고 findOs메서드 또한 만들어서 호출해서
코드를 줄인형식이다.