Struts学习之HelloWord

1、Struts环境配置

1)由于Struts是分离表现层和控制层的一个Java Web 框架 ,所以第一步创建项目一个Web Project 


2)拷贝Struts的相关jar包到/WEB-INF/lib文件夹下,这样就可以在Referenced Libraries 下看到相关的引用


2、Struts环境配置完成之后,Struts项目并不能工作,还需要一些配置工作。我们都知道Struts是分离的表现层和控制层的MVC框架,那么分离之后,运行时,它又是如何做到将表现层和控制层联系起来的呢?接下来的操作就会告诉你。
1)创建表现层文件login.jsp 文件代码如下:

		<%@ page language="java" contentType="text/html; charset=GB18030"
		    pageEncoding="GB18030"%>
		<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
		<html>
		<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
		<title>Insert title here</title>
		</head>
		<body>
			<form method="post" action="login.do">	 
				<input type="submit" id="btnLogin" value="测试Struts"/>
			</form>
		</body>
		</html>

创建表现层文件login_success.jsp 文件代码如下:

		<%@ page language="java" contentType="text/html; charset=GB18030"
		    pageEncoding="GB18030"%>
		<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
		<html>
		<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
		<title>Insert title here</title>
		</head>
		<body>
			测试成功!
		</body>
		</html>

2 ) 配置web.xml文件 web.xml文件配置如下:

 

		<?xml version="1.0" encoding="UTF-8"?>
		<web-app version="2.4" 
			xmlns="http://java.sun.com/xml/ns/j2ee" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
			xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
			http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
			
			<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>
	  		<load-on-startup>2</load-on-startup>
			</servlet>
			
			<servlet-mapping>
				<servlet-name>Action</servlet-name>
				<url-pattern>*.do</url-pattern>
			</servlet-mapping>  
		
		</web-app>

 

这样配置之后通过Serlvet就将表现层(*.do)的与Struts框架(ActionServlet)相连。

3)创建控制层文件LoginAction.java 该文件代码如下:

 

		import org.apache.struts.action.ActionForm;
		
		public class LoginForm extends ActionForm  {
			private String userName;
		
			public String getUserName() {
				return userName;
			}
		
			public void setUserName(String userName) {
				this.userName = userName;
			}
			
		}

4)创建struts-config.xml文件,配置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>	 
			
			<action-mappings>
				<action path="/login" 
						type="com.control.LoginAction"				
						scope="request"		
						>
					<forward name="success" path="/login_success.jsp" /> 	
				</action>
			</action-mappings>
			
		</struts-config>

配置struts-config.xml文件之后,就可以将Struts框架与控制层进行联系。这是因为Struts框架(ActionServlet)加载之后,会对struts-config.xml进行一系列的处理,这些处理都是Struts框架内部进行的,这里我们不做详细解释。

 


3、到目前为止,一个简单的Struts实例已经完成,但是MVC中的model层我们并没有体现与Struts的联系。接下来我们继续完善上述实例,将模型层与Struts框架关联

1)首先我们创建LoginForm.java文件,文件代码如下

 

		import org.apache.struts.action.ActionForm;
		
		public class LoginForm extends ActionForm  {
			private String userName;
		
			public String getUserName() {
				return userName;
			}
		
			public void setUserName(String userName) {
				this.userName = userName;
			}
			
		}

2)修改之前的login.jsp文件,修改后文件如下

 

		<%@ page language="java" contentType="text/html; charset=GB18030"
		    pageEncoding="GB18030"%>
		<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
		<html>
		<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
		<title>Insert title here</title>
		</head>
		<body>
			<form method="post" action="login.do">
			姓名:<input type="text" name="userName"/><br/>
			<input type="submit" id="btnLogin"/>
			</form>
		</body>
		</html>

3) 修改struts-config.xml文件,配置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="loginForm" type="com.model.LoginForm"/>
			</form-beans>
			
			<action-mappings>
				<action path="/login" 
						name="loginForm"
						type="com.control.LoginAction"				
						scope="request"		
						>
					<forward name="success" path="/login_success.jsp" />
					<forward name="error" path="/login_error.jsp"/>		
				</action>
			</action-mappings>
		</struts-config>

4)修改LoginAction.java 该文件代码如下

 

		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;
		
		import com.model.LoginForm;
		
		public class LoginAction extends Action {
		
			@Override
			public ActionForward execute(ActionMapping mapping, ActionForm form,
					HttpServletRequest request, HttpServletResponse response)
					throws Exception {
				
				LoginForm laf = (LoginForm)form;
			 	String username =laf.getUserName();
				System.out.println(username);		
				String forward="error";
				
				if("admin".equals(username)){
					forward="success";
				} 
				
				return mapping.findForward(forward);
			}
		}


完成之后,我们就通过struts-config.xml文件将模型层(LoginForm)与控制层(LoginAction)联系了起来,至于如何联系模型层与表现层,我们只需要知道模型层中getUserName()和setUserName()表现层中userName保持对应即可将其联系起来,具体实现这就交给了Struts框架完成,这里我们不错解释。

 


到此为止,我们已经将Struts如何应用介绍完毕,相信你也对Struts使用有了一定的了解。但你可能还有许多疑问,Struts是如何实现那些联系的细节的呢?这些留到下次我们继续讲解。

posted @ 2013-05-08 20:15  javawebsoa  Views(183)  Comments(0Edit  收藏  举报