快速开发基于struts的web项目步骤---以简单的登录为例
1.配置struts开发环境
(1)把struts lib下的jar包拷贝到新建web项目的lib下
(2)修改web.xml文件--ActionServlet的配置文件(中央控制器)
添加的代码如下:
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
(3)新建struts-config.xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
</struts-config>
该文件是由ActionServlet读取的配置文件,定义了所有关于Action、ActionForm、ActionForward等的详细信息(具体配置见后面步骤)。
2.创建需要的jsp页面和各java文件
(1)创建JSP文件(login.jsp success.jsp failure.jsp)
login.jsp主要代码如下
<form action="login.do" method="post">
用户名:<input type="text" name="username"/>
<input type="submit" value="登录"/>
</form>
success.jsp主要代码如下
<body>
<%=request.getAttribute("username") %>,登录成功
</body>
failure.jsp主要代码如下
<body>
登录失败
</body>
(2)创建LoginActionForm.java文件
package edu.yy.struts;
import org.apache.struts.action.ActionForm;
public class LoginActionForm extends ActionForm {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
注意:
A:LoginActionForm是一个JavaBean,需要继承org.apache.struts.action.ActionForm类,功能是捕获通过HTTP请求传递的参数;
B:LoginActionForm针对HTML表单中的字段都有一个对应的属性;
C:ActionServlet匹配请求中的参数和LoginActionForm中的属性,并调用该类中的setter方法,将参数传入LoginActionForm;
(3)创建LoginAction.java文件
package edu.yy.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//把ActionForm强转为LoginActionForm
LoginActionForm laf=(LoginActionForm)form;
//从LoginActionForm中获取用户名
String username=laf.getUsername();
//用户名的逻辑判断,并决定返回哪个ActionForward
if(username.equals("struts")){
//把用户名放入request中
request.setAttribute("username", username);
//跳转到成功页面
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
注意:
A:Action是一个Java类,需要继承org.apache.struts.action.Action类;
B:ActionServlet将会组装ActionForm,并将其传递给Action;
C:Action通常负责
a.输入参数的校验;
b.调用业务逻辑类;
c.返回ActionForward。
(4)配置struts-config.xml文件
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="form" type="edu.yy.struts.LoginActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/login"
type="edu.yy.struts.LoginAction"
name="form"
scope="request"
>
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/failure.jsp"></forward>
</action>
</action-mappings>
</struts-config>
说明:
@:<form-beans>标签内部可以包含多个<form-bean>标签
@@:<form-bean>标签需要指定name和type属性
name:给ActionForm一个表示名字
type:包名+类名
@@@:action标签中重要属性含义如下
path:即form表单提交时通过使用说明URL路径来访问Action
type:处理URL请求的action类:包名+类名
name:标识哪个ActionForm将被创建,并把提交的表单组件给它
scope:FormBean的作用范围