码迷,mamicode.com
首页 > Web开发 > 详细

<Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)

时间:2015-09-13 18:41:35      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

现在,我们的时钟显示了UTC时区的时间。我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好。为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用。

在我们深入了解之前(Before we go any further),我们应当介绍一种保持HTML和我们的servlet代码相分离的方法。这允许我们分别维护应用的外观和业务逻辑(business logic),业务逻辑代码实现了我们应用的主要目标,使得我们的逻辑易于测试,应用的外观易于改变。典型的是,你将会使用模板系统以文件形式来定义应用的外观,文件包括THML,CSS,JavaScrpt以及用于放动态数据的保留空白。在Java中很多好的模板系统可供选择,比如Apache Velocity。

对于这个例子,我们使用Java Servlet Pages,或JSPs。JSPs是J2EE的标准部分,它意味着你不需要安装任何其他的东西就可以使用它们。一个JSP包含文本(HTML)、定义这页逻辑的Java代码的混合。JSP编译为一个servlet(The JSP compiles to a servlet),就像我们已经定义的ClockServlet,它等同于写HTML部分和评价Java部分(that‘s equivalent to writing out the HTML portions,and evaluating the Java portions)。在某种意义上,JSPs仅仅是写servlet代码的另一种方式。

JSPs经常被批评为太强大了。因为从一个JSP中可以获得整个Java语言,所以存在这样的风险:业务逻辑可能会写到模板中,而你不再进行有效的分离。为了缓和这点,JSP规范的后续版本包含了新的方法来描述模板逻辑,这就有意地使得没有整个Java代码强大:Java Servlet Templating Language(JSTL)和JSP Expression Language(EL)。我们为这个例子,以及在本书的其他需要模板化输出的地方,使用这些特性。

编辑ClockServlet.java成类似例2-12。

例2-12.显示Google帐户和链接的ClockServlet.java代码

pacage clock;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarning("serial");
public cladd ClockServlet extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse resp)
               throws IOException,ServletException{
             SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
             fmt.setTimeZone(new SimpleTimeZone(0,""));

             UserService userService = UserServiceFactory.getUserService();
             User usr = userService.getCurrentUser();
             String loginUrl = userService.createLoginURL("/");
             String logoutUrl = userService.createLogoutURL("/");

             req.setAttribute("user",user);
             req.setAttribute("loginUrl",loginUrl);
             req.setAttribute("logoutUrl",logoutUrl);
             req.setAttribute("currentTime",fmt.format(new Date()));      

             resp.setContentType("text/html");

             RequestDispatcher jsp = req.getRequestDispatcher("/WEB-INF/home.jsp");
             jsp.forward(req,resp);
        }
}

接下来,在你的项目的war/WEB-INF/目录创建一个新的文件叫做home.jsp,并添加类似例2-13的内容。

例2-13.显示Google帐户和链接的ClockServlet.java代码

 

<Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)

标签:

原文地址:http://www.cnblogs.com/niaomingjian/p/4805283.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!