疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Struts2的开发流程


 

 
为了能够在eclipse中使用Struts2在进行开发时,需要根据需要导入一些有关的jar包;
 
在官网下载相关的压缩包,这里下载了两个:struts-2.3.30-all.zip和struts-2.3.30-docs.zip,解压到同一个文件夹中。
 
在eclipse中新建了新的Dymamic Web Project以后,为该项目添加Struts2支持:
 
1.复制Struts2解压目录下struts2-blank.war解压后WEB-INFlib目录下的所有jar包到web项目中的WebContentWEB-INFlib下;
 
2.把这些复制的jar包导入项目中去。
 
开始使用Struts2开发:
 
1.在web.xml中定义拦截器拦截用户请求:
 
  如果eclipse中生成的Dynamic Web Project中没有自动生成web.xml文件,可以从Tomcat相关的文件夹中找到一个默认的web.xml文件,把此文件复制到项目的WEB-INF目录下(不是WEB-INFlib下)。
 
  也可以在struts2-blank.war解压后目录的WEB-INF下直接复制一个web.xml。
 
  修改此web.xml文件,如下所示:
 
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">
 
    <!-- 定义核心拦截器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <!-- 使核心拦截器拦截所有的请求 -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
复制代码
2.定义包含表单数据的JSP页面:
 
  写一个提交请求的JSP页面,此JSP页面将会将请求提交给相关的Action类来处理。
 
复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="test_1">
    <s:textfield name="username" key="username"/>
    <s:submit key="login" value="login"/>
</s:form>
</body>
</html>
复制代码
3.定义处理用户请求的Action类:
 
  写一个与以上JSP关联的Action类来处理该JSP提交的请求。在eclipse中直接放在在src目录下即可
 
复制代码
package testAction;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class Test_1Action extends ActionSupport{
    //定义封装请求参数的成员变量
    private String username;
    //setter、getter方法
    public void setUsername(String username){
        this.username = username;
    }
    public String getUsername(){
        return this.username;
    }
    //定义处理请求的execute方法
    public String execute()throws Exception{
        if(getUsername()!=null){
            return SUCCESS;
        }else{
            return ERROR;
        }
    }
}
复制代码
4.编写物理视图资源文件:
 
  为了简单,我们把物理视图资源文件直接放在项目的webContent目录下
 
  error.jsp:
 
复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>error page</title>
</head>
<body>
    错误页面!username为空!
</body>
</html>
复制代码
  welcome.jsp:
 
复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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=UTF-8">
<title>welcome page</title>
</head>
<body>
    登陆成功!
</body>
</html>
复制代码
5.配置处理用户请求的Action类并配置Action的处理结果和物理视图资源的映射关系::
 
  使得JSP页面的请求能够准确找到与此JSP页面相关的Action类。
 
  配置Action需要在项目的src目录下添加struts.xml文件,此文件的默认文件也可以在struts2-blank.war解压后目录的WEB-INFclasses下找到,把其修改为如下内容:
 
复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
 
<struts>
 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    
    <package name="test" extends="struts-default">
        <!-- 
            定义了名为test_1的Action;
            处理请求的Action类为testAction.Test_1Action.java
         -->
        <action name="test_1" class="testAction.Test_1Action">
            <!-- 定义逻辑视图与物理视图之间的映射关系 -->
            <result name="error">error.jsp</result>
            <result name="success">welcome.jsp</result>
        </action>
    </package>
</struts>
复制代码