I18N接口
package com.imooc.factory.i18n; //Internationalization public interface I18N { public String getTitle(); }Chinese.java-> I18接口的实现类
package com.imooc.factory.i18n; public class Chinese implements I18N{ public String getTitle() { return "人事管理系统"; } }Spanish.java-> I18接口的实现类
package com.imooc.factory.i18n; public class Spanish implements I18N { public String getTitle() { return "Sistema de gestión del personal"; } }Italian.java-> I18接口的实现类
package com.imooc.factory.i18n; public final class Italian implements I18N{ public String getTitle() { return "Sistema de gestión del personal"; } }I18NFactory.java
package com.imooc.factory.i18n; public class I18NFactory { //静态工厂 public static I18N getI18NObject(String area) { if ("china".equalsIgnoreCase(area)) { return new Chinese(); }else if("spain".equalsIgnoreCase(area)) { return new Spanish(); }else if("Italy".equalsIgnoreCase(area)) { return new Italian(); }else { return null; } } }Software.java
package com.imooc.factory; import com.imooc.factory.i18n.I18N; import com.imooc.factory.i18n.I18NFactory; public class Software { public static void main(String[] args) { I18N i18n = I18NFactory.getI18NObject("china"); System.out.println(i18n.getTitle()); } }创建一个动态web工程
在web目录下创建俩个目录,一个为desktop,另一个为mobile,在俩个文件夹中创建index.html并写入对应的内容
在src下创建com.imooc.servlet包,在这个包下创建IndexServlet的serlvet程序
在com.imooc.servlet下再创建一个device包,在里面创建deviceDevice接口、DesktopDevice类、MobileDevice类、DeviceFactory类、
mobile/index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>这是手机端界面</h1> </body> </html>desktop/index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>这是PC端界面</h1> </body> </html>MobileDevice.java
package com.imooc.servlet.device; public class MobileDevice implements Device{ public String getIndex() { return "/mobile/index.html"; } public String getDescription() { return "/mobile/desc.html"; } }DesktopDevice.java
package com.imooc.servlet.device; public class DesktopDevice implements Device{ public String getIndex() { return "/desktop/index.html"; } public String getDescription() { return "/desktop/desc.html"; } }Device.java
package com.imooc.servlet.device; public interface Device { public String getIndex(); public String getDescription(); }DeviceFactory.java
package com.imooc.servlet.device; import javax.servlet.http.HttpServletRequest; public class DeviceFactory { public static Device getDevice(HttpServletRequest request) { String userAgent = request.getHeader("user-agent"); System.out.println(userAgent); if (userAgent.indexOf("Windows NT") != -1) { return new DesktopDevice(); }else if(userAgent.indexOf("iPhone") != -1 || userAgent.indexOf("Android") != -1) { return new MobileDevice(); } return null; } }IndexServlet.java
package com.imooc.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.imooc.servlet.device.Device; import com.imooc.servlet.device.DeviceFactory; /** * Servlet implementation class IndexServlet */ @WebServlet("/index.html") public class IndexServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public IndexServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub Device device = DeviceFactory.getDevice(request); request.getRequestDispatcher(device.getIndex()).forward(request, response);; } }