开发环境:myeclipse 7.5 + tomcat 6.0 + jdk
如果在用myeclipse开发struts前先配置tomcat环境,可以参考下
http://blog.csdn.net/upfar/archive/2011/02/21/6197197.aspx
好了,tomcat环境配置好了,开发struts开始
1.启动myeclipse,点开菜单"File",然后选择"new"->"Project"->"Web Project"
2.点击next后弹出一个project配置窗口,在"Project Name"栏我们输入工程名:hello,然后选择"java EE 5.0",然后点击"finish",web工程创建完毕
3.在工程内添加入struts框架,在刚创建的工程上点右键,选择"myeclipse"->Add Struts Capabilities,在弹出的窗口上输入actionServlet name,将Base package for new classes设置为struts(其实就是为class设置一个包),然后点"finish".(actionServlet是核心控制器,action是业务控制器)
4.点开hello工程,发现多了很多东西,点开WebRoot->Web-INF,双击struts-config.xml,看到这里是一个可视化操作界面,点击左边列的中间有一个"J"的图标,然后依次创建2个jsp文件login.jsp和loginsuccess.jsp
login.jsp代码
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for UserLoginForm form</title>
</head>
<body>
<html:form action="/action2">
userName : <html:text property="uname"/><br/>
password : <html:password property="upwd"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
loginsuccess.jsp代码
<%@ page language= "java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>
<!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<title>My Struts 'loginSuccess.jsp' ending page</title>
</head>
<body>
Hello <bean:write name="username" scope="request" />, you successfully logged in!
</body>
</html:html>
5.然后在空白处点击右键,选择new->action,form,jsp,弹出设置actionform的窗口,在Use case输入action2,以及点击add按钮添加actionForm的属性值uname,upwd,点击next
6.这里是action的设置,点击Forwars,以及添加转向success,failure,点finish完成.
7. 打开工程中的src->struts.action->Action2Action,找到execute方法,将execute代码替换成如下:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Action2Form action2Form = (Action2Form) form;// TODO Auto-generated method stub
if (action2Form.getUname().equals("hello") && action2Form.getUpwd().equals(""))
{
request.setAttribute("username", action2Form.getUname());
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
8.发布工程,右键点击工程,选择myeclipse->add and remove Deployment,然后add,在server里面选择之前已经配置好的tomcat,然后点finish,工程就自动发布到了tomcat的webapps目录下
然后通过myeclipse的快捷工具栏启动tomcat(或者右键工程->run as->Configuration->鼠标双击myeclipse server application,然后server选择tomcat,启动 tomcat)
然后输入http://localhost:8080/hello/login.jsp就可以看到登陆界面了
这个是大多都可以在网上找到类似的资料,以下是个人对struts的一点理解
1.添加了add struts capabilities后,就会创建struts-config.xml,在web.xml中加入<servlet-name>以及<servlet-class>,这个就是添加actionservlet这个核心控制器以及引入struts库等
2.在struts-config.xml中添加action,form,jsp等操作后,就会在struts-config.xml中添加<form-bean><action-mapping>
那么个人理解struts流程就是
1.actionservlet拦截到login.jsp的请求后,就检查actionForm是否存在,不存在则创建,并保存在struts-config.xml中的<form-bean>中,并将请求保存在对应的actionForm中(login.jsp中的2个文本框请求变量的property对应的就是actionForm的属性变量名)
2.actionForm保存了请求变量后进行一般性的语法以及格式检查后,会返回一个actionerros对象,如果返回null或者一个不包含actionerror的actionerrors对象,则验证成功
3.actionServlet检查action,如果没有则创建,检查是否有action-mapping对象,如果没有则创建并将action配置信息都<action-mapping>中,并保存在struts-config.xml的<action-mapping>中,执行action的execute方法,代码中首先可以读取actionForm保存的请求变量(通过request.getParameter()或者actionform.getUname()),然后将获取的变量给request,目的是要传递给loginsuccess.jsp显示,然后调用action-mapping对象的findForward方法,读取struts-config.xml文件,找到对应的forward对象,并将forward对象返回给actionServlet
4.actionServlet根据forward对象找到指向的jsp页面,然后将请求转发给这个jsp
5.jsp根据请求,调用jsp组件生成jsp动态页面返回给客户