zoukankan      html  css  js  c++  java
  • JSP技术在WAP开发中的应用

    按照以下的基本规则使用JSP编写WML程序了。 

    (
    1) WML的标签和语句均可直接写在JSP程序中。 

    (
    2) 如果想使用JSP来处理WML的标签和语句,则需要使用“<%”和“%>”引起来,格式为: 

    <% 
    ……(JSP编写的WML语句行); 
    %> 

    例如,以下几行语句就是利用JSP的out.println来输出WML的标签和语句: 

    <% 
         out.println(
    "<br>"); 
             out.println(
    "Hello from script code!<br/>"); 
         out.println(
    "</p>"); 
    %> 



    (
    3) JSP编写的WML语句要用引号(" ")引起来,然后再用括号括起来,而且后面还要加上分号( ; ),格式为: 

    JSP对象.方法
    /关键字(" ……WML标签或语句行 "); 

    例如,下面就是反映JSP书写WML语句格式的例子: 
    out.println(
    "Hello from script code!<br/>"); 

    (
    4) WML的文件类型可以使用JSP的response对象进行声明,也可以在声明页面语言时一块儿声明,它们的格式分别如下: 

    <% response.setContentType("text/vnd.wap.wml"); %> 

    或 

    <%@ page language="java" contentType="text/vnd.wap.wml" %> 

    (
    5) 最后的程序文件保存时要采用“.jsp”的扩展名,即保存为JSP的程序文件。JSP将被编译成Java源文件,最后成为servlet。 

    了解了以上基本规则,我们下面给出一个利用JSP向WAP浏览器显示“Hello from script code
    !”信息的简单程序,通过该程序大家可以进一步认识利用JSP开发WML页面的具体方法。 

    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> 
    <% response.setContentType("text/vnd.wap.wml"); %> 
    <wml> 
         
    <card> 
              
    <do type="accept"> 
              
    <go href="index.jsp#test"/> 
              
    </do> 
              
    <p>JSP Test:<br/> 
                  Press accept to 
    continue!<br/> 
              
    </p> 
         
    </card> 
         
    <card> 
              
    <do type="prev"> 
                  
    <prev/> 
              
    </do> 
         
    <% 
              out.println(
    "<p>"); 
              out.println(
    "Hello from script code!<br/>"); 
              out.println(
    "</p>"); 
         
    %> 
         
    </card> 
    </wml> 


    程序举例 
    我们下面利用JSP和WML实现一个为移动用户定时更新约会的例子。该例的应用程序共包括两个页面。第一个页面的文件是pick_appointment.jsp,它提供了一个选择卡片,当用户选择了其中某一个约会时间时,浏览器就会带着本次约会的ID号进入到第二个页面,即文件名为show_appointment_data.jsp的页面。我们在第二个页面编写了两个卡片,其中第一个卡片用于显示会面的时间,第二个卡片用于显示数据输入,让用户通过输入ID而取消约会。 

    程序中动态的约会数据是通过Java Bean的实例来取得的,具体过程其实是通过JDBC连接到数据库的过程。取消约会的操作是通过servlet实现的。由于用户可能随时取消某个约会,所以我们需要对pick_appointment.jsp页面进行定时刷新。下面我们就给出这一应用程序的源程序。 


    pick_appointment.jsp页面文件的程序代码如下: 

    <%@ page language="java" contentType="text/vnd.wap.wml" %> 
    <jsp:useBean> 
    <%! 
    // 下面创建针对每次约会的选项<option>元素 
    private String getOptions(mwebber.samples.AppointmentBean appointmentBean) 

         StringBuffer sb 
    = new StringBuffer(); 
         
    int[] appointmentIDs = appointmentBean.getAppointmentIDs(); 
         
    for(int i=0; i<appointmentIDs.length; i++
              sb.append(
    "<option onpick=\"show_appointment_data.jsp?id="); 
              sb.append(i); 
              sb.append(
    "\">"); 
              sb.append(appointmentBean.getAppointmentTime(i)); 
              sb.append(
    "</option>"); 
         }
     
         
    return sb.toString(); 
    }
     
    %> 

    <%! String strXMLPrologue = ""%> 
    <%-- WML内容开始 --%> 
    <%= strXMLPrologue %> 
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> 
    <wml> 
         
    <card> 
              
    <!-- 每分钟刷新一次卡片组 --> 
              
    <onevent type="ontimer"> 
                  
    <go href="pick_appointment.jsp"/> 
              
    </onevent> 
              
    <timer value="600"/> 
              
    <!-- 回显卡片 --> 
              
    <do type="prev"> 
                  
    <prev/> 
              
    </do> 
              
    <!-- 为要选择约会而显示"select" --> 
              
    <p> 
                  
    <select title="Appointments"> 
                       
    <%= getOptions(appointmentBean) %> 
                  
    </select> 
              
    </p> 
         
    </card> 
    </wml> 
    <%-- WML内容结束 --%> 



    show_appointment_data.jsp页面文件的程序代码如下: 

    <%@ page language="java" contentType="text/vnd.wap.wml" %> 
    <jsp:useBean> 
    <% 
    // 使用request对象的方法获取"id"参数的值 
    int intAppointmentID = Integer.parseInt(request.getParameter("id")); 
    %> 
    <%! String strXMLPrologue = ""%> 
    <%-- WML内容开始 --%> 
    <%= strXMLPrologue %> 
    <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/ wml_1.1.xml"> 
    <wml> 
         
    <card> 
              
    <p align="center"> 
                       
    <b> 
                 
    <%= appointmentBean.getAppointmentTime(intAppointmentID) %> 
               
    </b> 
              
    </p> 
              
    <p> 
                  
    <br/> 
                   
    <%= appointmentBean.getAppointmentDetails(intAppointmentID) %> 
                  
    <br/> 
                  
    <a href="#check_off">Check off this appointment</a><br/> 
                  
    <a href="http://localhost:8080/pick_appointment.jsp">Back to appointments list</a> 
              
    </p> 
         
    </card> 
         
    <card> 
              
    <!--设置向服务器发送输入数据的选择项 --> 
              
    <do type="accept"> 
                  
    <go href="/servlet/ProcessCheckOff" method="post"> 
                       
    <postfield> 
                  
    </go> 
              
    </do> 
              
    <p> 
                  
    <input> 
              
    </p> 
              
    <p>
                  
    <a href="#main_data">Back to appointment data</a> 
                  
    <br/>
                                
    <a href="http://localhost:8080/pick_appointment.jsp">Back to appointments list</a>

              
    </p> 

         
    </card> 
    </wml> 
    <%-- WML内容结束 --%>



    Servlet技术在WAP开发中的应用

    WAP开发中应用Servlet技术时要利用专用WAP服务器软件,如Nokia WAP Server等提供的开放程序接口来编写具体的程序。
    我们仍以WML为例,它应用Servlet编程的规则与应用JSP时的规则基本相同,我们不再逐条给出解释。
    通过下面的简单例子,结合JSP的编写规则,大家不难了解Servlet编写WML页面的基本规则:



    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class WapServlet extends HttpServlet
    {

    protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException
     
    {
      response.setContentType(
    "text/vnd.wap.wml");
      PrintWriter out 
    = response.getWriter();
      xmlHeader(out);
      out.println(
    "<wml>");
      out.println(
    "<card title = \"JavaTest\">");
      out.println(
    "<p>Hello! This comes from a servlet!</p>");
      out.println(
    "</card>");
      out.println(
    "</wml>");
     }


     
    public void xmlHeader(PrintWriter out)
     
    {
      out.println(
    "<?xml version=\"1.0\"?>");
      out.println(
    "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" "+
            "\"http://www.wapforum.org/DTD/wml_1.1.xml\">");

     }


    }




    下面我们给出一个简单的Servlet程序,它可在WAP浏览器上显示“The simple HelloWorld servlet.”的信息。程序清单如下:


    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class HelloWorld extends HttpServlet
    {

    String m_text;
    public void init(ServletConfig config) throws ServletException
    {
      
    super.init(config);
      m_text 
    = config.getInitParameter("text");
      
    if (m_text == null)
      
    {
        m_text 
    = "This is a simple test servlet.";
      }

    }




    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
    {
      PrintWriter out 
    = response.getWriter();
      out.println(
    "<?xml version=\"1.0\"?>");
      out.println(
    "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML1.1//EN\"\"http://www. wapforum.org/DTD/wml_1.1.xml/">");
      out.println("<wml>");
      out.println(
    "<card id=\"card1\" title=\"Hello World\">");
      out.println(
    "<p>");
      out.println(m_text);
      out.println(
    "</p>");
      out.println(
    "</card>");
      out.println(
    "</wml>");
      
    // Remember to close the out object
      out.close();
    }


    public String getServletInfo( )
    {
      
    return "The simple HelloWorld servlet.";
    }

    }






  • 相关阅读:
    领域建模
    中科院
    开放搜索服务OpenSearch
    GUIForDebug
    java: org.luaj.vm2.LuaError:XXX module not found lua脚本初始化出错(转)
    new TimerTask(robot)(转)
    lua-TestMore(转)
    Lua 数据库访问(转)
    推荐谈论高并发柱
    查看文章strncpy()功能更好的文章
  • 原文地址:https://www.cnblogs.com/bluespot/p/1250350.html
Copyright © 2011-2022 走看看