Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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>密&nbsp;&nbsp;码:<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应用。