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是如何实现那些联系的细节的呢?这些留到下次我们继续讲解。