一直我们都是在本地学习 wml 和 wmlscript , 那么如果放在服务器上会怎么样呢 ?
或者 我们需要和其他后台进行相互通信, 再结合数据库 又会怎样呢 ?
这次我们学习一下 在 tomcat服务器上 配置 wml 和 servlet 让它们相互通信。
思路是这样的: wml页面提交数据给 servlet , servlet 接收后再进行处理 ,然后返回一个wml页面
给手机进行显示。
==========================================
好,我们先安装一下 tomcat 服务器吧, 这里我使用的版本是 apache-tomcat-5.5.20 ,
在文章的最后我会提供给大家下载, 你可以在网上下载吧。
如果你一直 按照我们这个wml教程来做的话, 那么你已经安装好 JDK 了,也配置好环境了。
如果你还没有的话 请参考
http://www.17rumen.com/archives/175.html 这个视频详细演示了 jdk 1.7安装 和 配置环境变量的。
这里我不重复了, 假设你的电脑已经安装好了 jdk 和 配置好了环境变量。
那么你就可以 解压出 tomcat 就可以使用了。
看我操作吧。
运行 apache-tomcat-5.5.20\bin\startup.bat 就可以测试 一下 是否成功
看到没有出错的信息, 一般正常运行, 可以用浏览器进行测试
http://127.0.0.1:8080/ 显示一个 tomcat界面,表示正常了。
===========================================================
下面来编写 servlet 程序。
详细的编写 过程 我就不说了, 还有你需要一定的 java 基础。
特别是 j2ee 这一块的, 特别servlet 这个吧。
这里我主要讲解一下 重点部分
response.setContentType("text/vnd.wap.wml");
这个就是 指定 响应后返回给 客户端界面的格式吧。
如果是 平时我们用的 ie 浏览器这些 电脑浏览器界面, "text/html" 格式的
String userName = request.getParameter("userName");
这个就是得到手机页面传过来的参数的值
if( !userName.equals("Jack") )
{
response.sendRedirect("/wml/wml_06.wml");
}
然后做一个简单的判断, 如果 手机用户输入的名字 不是Jack 则返回到输入界面
如果输入的名字是 Jack 那么就会显示一个
out.println("<?xml version=\"1.0\"?>");
out.println("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"");
out.println(" \"http://www.wapforum.org/DTD/wml_1.1.xml\">");
out.println("<wml>");
out.println("<card title=\"Welcome!\">");
out.println(" <p align=\"center\">");
out.println("Hello, "+ userName );
out.println("</p>");
out.println("</card>");
out.println("</wml>");
这样的界面, 内容是 Hello, Jack
好, Servlet 文件有了, 但是这是一个 .java 源文件,还要编译成 .class 文件才行。
为了编译路径方便, 我们把 MyServlet.java 复制到 c:\ 盘下
C:\>cd \
C:\>javac MyServlet.java
MyServlet.java:2: 软件包 javax.servlet 不存在
import javax.servlet.*;
^
MyServlet.java:3: 软件包 javax.servlet.http 不存在
import javax.servlet.http.*;
^
MyServlet.java:4: 找不到符号
public class MyServlet extends HttpServlet
出现一些错误, 这是一个包的缺省, 一个 j2ee的, tomcat 自带有的,
但是要 配置一下 环境变量 classpath 下面看我配置吧。
在最后加入
;C:\Documents and Settings\Administrator\桌面\apache-tomcat-5.5.20\common\lib\servlet-api.jar
然后 一定要退出原来的 cmd
再重新执行 cmd
这样就成功编译出 MyServlet.class 文件了。
=============================================
下面我们来 配置一些 这个 wml 文件和 MyServlet.class 这个文件
\apache-tomcat-5.5.20\webapps 在这个目录下 新建 一个 wml 文件夹
然后进入文件夹 再新建一个 WEB-INF文件夹, 再进去新建一个文件夹 classes和一个 web.xml文件。
记事本打开 web.xml 文件 , 内容如下:
<web-app>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
把刚才编译的 MyServlet.class 放入 classes目录下
至于 wml 文件方面,我们用会 第6课的视频教程的代码 wml_06.wml
不过要做一些修改
<a href="http://127.0.0.1:8080/wml/MyServlet?userName=$(userName)">
Login
</a>
很遗憾的是 我们一直使用的 Nokia Mobile Browser Simulator 4.0
不能通过 RUL 来访问 wap网站, 只能本地打开 .wml 文件,可能是我不会设置的原因吧
我现在也可以再测试一下, 是吧,就是这样 一直等下去
http://127.0.0.1:8080/wml/wml_06.wml
这个路径是没有错的。
不说了, 现在我们用另外一个 软件来测试吧。
M3Gate1.2(windows访问wap网站浏览器).7z
你们可以到网上下载,我也会提供给你们下载的。
具体怎样用, 我不说了, 看我操作吧。
这样就打开了
点击 login 后, 出现 404 也就是没有找到 tomcat 上的 servlet
我们可能是刚才配置好了 没有重启 tomcat
我现在关闭了, 再次 启动一下
我找到原因了 , web.xml 文件应该 在 WEB-INF 目录下的。
看到了吧, 现在我们就可以 看到 显示 Hello, Jack 了
这时我们登陆 都不了, 只会再回到 这个界面上去
现在这个服务器只能在 局域网上 访问吧
你可以修改 .wml 中的
<a href="http://192.168.1.8:8080/wml/MyServlet?userName=$(userName)">
Login
</a>
再手机 模拟器上 输入 http://192.168.1.8:8080/wml/wml_06.wml
也是一样的效果, 这时你可以在局域网上 的其他机器进行访问
==================================
下面总结一下吧, 这只是一个简单的 交互程序
你可以做一些扩展, 例如 加上验证密码
还有 用户名和密码 需要从数据库中 得到进行验证
这就涉及到 servlet 和 数据库上的啦。
还有就是 当输入的数据有问题, 做一个 提示页面 告诉用户 重新输入一次
等等。。这些你们都可以进一步学习。 我就演示到这里了 88