본문 바로가기

카테고리 없음

AgentUser

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메서드 또한 만들어서 호출해서

코드를 줄인형식이다.