下面通过一个小例子来实际操作一下Struts2的开发,演示一个简单的登录系统。
基于Struts2开发Java web项目主要经过一下步奏:
(1)在web.xml中配置核心控制器FilterDispatcher。
(2)设计和编写视图组件(JSP页面)。
(3)编写用来实现试图组件的业务逻辑组件JavaBean。
(4)编写试图组件对应的业务控制器组件Action,在该Action中调用业务逻辑组件JavaBean,进行业务逻辑处理。
(5)配置业务控制器Action,即修改Struts.xml配置文件。在struts.xml配置文件中配置逻辑视图与物理视图之间的跳转关系。Action调用模型组件(业务逻辑组件)处理后返回处理结果(逻辑视图,即返回的字符串),根据处理结果进行下一步页面跳转。页面怎么跳转都是事先在struts.xml中配置好了的。
项目的具体代码:
(1)在web.xml中配置核心控制器
</pre><pre name="code" class="html"><span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0">
<welcom-file-list>
<welcome-file>index.jsp</welcome-file>
</welcom-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <span style="font-family: Arial, Helvetica, sans-serif;"><!--在myeclipse中,加载的核心控制器最好就是这个类--></span>
</fiter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app></span>
(2)编写视图组件
<span style="font-size:14px;"><%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>基于Struts2的登录系统</title>
</head>
<body>
<form method="post" action="lodin.action">
用户名:<input name="userName" type="text" size="24">
<br>
密码:<input name="passWord" type="password" size="26">
<br>
<input type="submit" value="登录">
</form>
<hr>
</body>
</html></span>
登录成功页面(success.jsp)
</pre><pre name="code" class="html"><span style="font-size:14px;"><%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>登陆成功页面</title>
</head>
<body>
<hr>
<h1>你登录成功,欢迎你!</h1>
<hr>
</body>
</html></span>
<span style="font-size:14px;"></span>
<span style="font-size:14px;">package loginBean;
public class LoginBean{
private String userName;
private String passWord;
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName=userNmae;
}
。。。。。。
//处理用户登录的方法,由于简化过程这里采用的是硬编码的方式
public boolean login(String userName,String passWord){
boolean b=false;
if(userName.equals("QQ")&&passWord.equals("123")){
b=true;
return b;
}
else{
b=false;
return b;
}
}
}
</span>
(4)编写业务控制器Action
<span style="font-size:14px;">package loginAction;
import loginBean.LoginBean;
public class LoginAction{
private String userName;
private String passWord;
public String getUserName(){
return userName;
}
。。。。。。
public String execute() throws Exception{
LoginBean lb=new LoginBean();
if(lb.login(userName,passWord)){
return "success";
}
else{
return "error";
}
}
}</span>
(5)配置Struts.xml中的Action
<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<struts>
<!--所有的Action配置都应该放在package下,name定义包名,extends定义继承包空间struts-default。-->
<package name="zzf" extends="struts-default">
<!--Action的配置可以有多对;name是对业务控制器命名,在表单中指定的名字需要与该名字一致;class指定Action类的位置。-->
<action name="login" class="loginAction.LoginAction">
<!--定义两个逻辑视图和物理资源之间的映射,name值是Action中返回的结果,即逻辑视图。-->
<result name="error">/login/login.jsp</result>
<result name="success">/login/success.jsp</result>
</action>
</package>
</struts></span>