目的:创造一个相当简单的login.jsp判断用户名与密码是否都是a,是则显示welcome,不是则显示error
基本算法思想:
login.jsp得到参数之后,扔到Loginaction.java文件进行检验,Loginaction.java处理之后,扔出返回值给struts.xml,之后struts.xml根据返回值确定要返回到error.jsp还是welcome.jsp。
而用户看起来就是login.jsp到error.jsp或者welcome.jsp。
一、准备工作
首先,在Eclipse创造一个新的Web工程
然后直接使用已经配置已配置好Struts2.2.1GA的WEB-INF替换掉原工程的WEB-INF文件夹,
已配置好Struts2.2.1GA的WEB-INF下载地址的http://download.csdn.net/detail/yongh701/7937631
毕竟自己去编辑web.xml文件,然后复制相应的包进入工程十分麻烦。
今天我个人就弄了很久,从排查Struts2的lib版本开始,试过2.0.11也试过2.3等等的版本都不行,再从网上查资料发现不同版本的Struts2的web.xml编写方式是不同的。于是对web.xml进行了多次的改写,然而在Tomcat7.0也好Tomcat6.0的服务器环境报错依旧。后来拿走别人已经弄好的Struts2工程下的WEB-INF替换掉自己工程下的WEB-INF,立竿见影,药到病除。
既然每次新建Struts工程都要重复配置一番,可不直接复制替换,一是省时间,二是省得不同的Struts2包、Tomcat、web.xml版本之间冲突。
二、在WebRoot或者WebContent编写login.jsp、error.jsp、welcome.jsp
error.jsp、welcome.jsp很简单,就是在BODY中放入”错误“与”欢迎“二字。
而login.jsp与普通的jsp没什么特别,就是一个普通的表单,只是跳转的部分写成login.action,其他的名称也没问题,只是一定要.action结尾,代码如下:
<%@ page language="java" contentType="text/html;charset=utf-8"%> <html> <head> <title>登陆页面</title> </head> <body> <h3> 用户登录 </h3> <!--关键是在这里,跳转给到一个名为login的action处理 --> <form action="login.action" method="post"> <table> <tr align="center"> <td> 用户名: <input type="text" name="username" /> </td> </tr> <tr align="center"> <td> 密码: <input type="password" name="password" /> </td> </tr> <tr align="center"> <td colspan="2"> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </td> </tr> </table> </form> </body> </html>
右击src选择New->Package。之后把包的名称命名为com.ascent.struts2.action,其他名称也没问题的。
再右击这个包,创造一个Java文件,也就是新建一个Class
代码如下:
package com.ascent.struts2.action; public class LoginAction { private String username; private String password; public String getUsername() { return username; } public String getPassword() { return password; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public String execute() { if ((getUsername().equals("a")) && (getPassword().equals("a"))) { return "success"; } return "error"; } }
至于前面冗长的私有变量的声明与完整的构造函数,暂时以我的水平看起来是必不可少的。因为我观察其余的Struts工程的java处理文件,都是这样编写的。
四、编写整个工程的核心文件:struts.xml
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <!-- 所谓的“指定Struts 2配置文件的根元素”,这段东西不一定要理解,但必须有,不然过不了tomcat的编译 --> <struts> <package name="struts2" extends="struts-default"> <action name="login" class="com.ascent.struts2.action.LoginAction"> <!-- 声明叫login的那个action的处理文件是com.ascent.struts2.action.LoginAction --> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> </struts>
至此,一个小小的Struts2工程开发完毕。
要想深入了解相关的利用,请参考各种教科书在编程示例之前的冗长理论。