2.2 从用户请求开始
Struts 2支持大部分视图技术,当然也支持最传统的JSP视图技术,本应用将使用最基本的视图技术:JSP技术。当用户需要登录本系统时,需要一个简单的表单提交页面,这个表单提交页面包含了两个表单域:用户名和密码。
下面是一个最简单的表单提交页面,该页面的表单内仅包含两个表单域,甚至没有任何动态内容,实际上,整个页面完全可以是一个静态的HTML页面。但考虑到需要在该页面后面增加动态内容,因此依然将该页面以jsp为后缀保存。下面是用户请求登录的JSP页面代码。
程序清单:codes\02\struts2qs\loginForm.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title>登录页面</title> </head> <body> <form action="login" method="post"> <table> <caption><h3>用户登录</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填" /></td> </tr> </table> </form> </body> </html>
正如前面介绍的,该页面没有包含任何动态内容,完全是一个静态的HTML页面。但我们注意到该表单的action属性:login,这个action属性比较特殊,它不是一个普通的Servlet,也不是一个动态的 JSP 页面。可能读者已经猜到了,当表单提交给 login 时,Struts 2 的StrutsPrepareAndExecuteFilter将会起作用,并调用用户开发Action来处理用户请求。
注意
前面配置Struts 2默认拦截所有的用户请求,一般建议省略请求后缀,或者将请求后缀设为.action。
该页面就是一个基本的 HTML 页面,在浏览器中浏览该页面,将看到如图2.1所示的界面。
图2.1 应用的登录页面
图2.1所示的URL中的8888是笔者的Tomcat服务端口,如果读者的Tomcat位于其他端口,则应该将该端口号修改为读者的端口号。
注意
从Struts 2.1开始,Struts 2提高了系统安全,默认不会列出Web应用根目录下的文件列表。所以,如果我们希望访问哪个页面,必须直接输入该页面的文件名;如果直接输入http://localhost:8888/struts2qs,将看到错误页面。当然,后面会介绍如何让Struts 2.1列出应用下的所有页面。
整个页面就是一个标准的HTML页面,整个单独的页面还没有与用户交互的任何能力。下面我们开始动手创建一个基于Struts 2的Web应用。