您的位置:首页 > 编程语言 > Java开发

Struts2的基本使用

2013-12-12 22:48 162 查看
1. Struts2的下载

    官方下载地址:http://struts.apache.org/download.cgi 

    Struts2完整版结构如下:apps(应用示例),docs(帮助文档,API),lib(核心类库),src(全部源码)

2. 导入struts2核心类库到项目

    基本包包括:antlr-2.7.2.jar,commons-fileupload-1.3.jar,commons-io-2.0.1.jar,commons-logging-1.1.3.jar,commons-lang3-3.1.jar,freemarker-2.3.19.jar,javassist-3.11.0.GA.jar,ognl-3.0.6.jar,struts2-core-2.3.15.3.jar,

xwork-core-2.3.15.3.jar,如需使用Struts2的更多特性,则需导入其它jar包

3. 在web.xml中配置Struts2的核心Filter

    <!-- 定义Struts2的核心Filter -->

    <filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

    <!-- 让Struts2的核心Filter拦截所有请求 -->

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

4. 创建登陆页面login.jsp,测试Struts2

<script type="text/javascript">

    function regist(){

        //获取页面的第一个表单

        targetForm = document.forms[0];

        //动态修改表单的action属性

        targetForm.action = "regist";

    }

</script>

<body bgcolor="pink">

    <center>

        用户登陆<br><hr>

        <form action="login">

            账 号:<input type="text" name="username"><br>

            密 码:<input type="text" name="password"><br>

            <input type="submit" value="登陆">

            <input type="submit" value="注册" onclick="regist();">

        </form>

    </center>

</body>

5. 为Struts2添加配置文件struts.xml

<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<!-- 指定Struts 2配置文件的根元素 -->

<struts>

    <!-- 指定全局国际化资源文件 -->

    <constant name="struts.custom.i18n.resources" value="mess"/>

    <!-- 指定国际化编码所使用的字符集 -->    

    <constant name="struts.i18n.encoding" value="GBK"/>

    <!-- 所有的Action定义都应该放在package下 -->

    <package name="userManager" extends="struts-default">

        <!-- 不配置method属性,交给默认的execute()方法处理 -->

        <action name="login" class="test.action.LoginAction">

            <!-- 定义三个逻辑视图和物理资源之间的映射 -->        

            <result name="input">/login.jsp</result>

            <result name="error">/error.jsp</result>

            <result name="success">/welcome.jsp</result>

        </action>

        <!-- 配置method属性,交给regist()方法处理 -->

        <action name="regist" class="test.action.LoginAction" method="regist">

            <result name="success">/welcome.jsp</result>

        </action>

    </package>

    <!-- 导入其它完整的配置文件 -->

    <include file="struts-xxx.xml"></include>

</struts>
6. 编写Action处理类BaseAction.java,LoginAction.java

/////////////////// 1.BaseAction

package test.action;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class BaseAction extends ActionSupport {

    

    private transient HttpServletRequest request = null;

    private transient HttpServletResponse response = null;

    private transient ServletContext servletContext = null;

    private transient HttpSession session = null;

    

    public void setRequest(HttpServletRequest request) {

        this.request = request;

    }

    public void setResponse(HttpServletResponse response) {

        this.response = response;

    }

    public void setServletContext(ServletContext servletContext) {

        this.servletContext = servletContext;

    }

    public void setSession(HttpSession session) {

        this.session = session;

    }

    public HttpServletRequest getRequest(){

        if(request != null){

            return request;

        }

        return ServletActionContext.getRequest();

    }

    public HttpServletResponse getResponse(){

        if(response != null){

            return response;

        }

        return ServletActionContext.getResponse();

    }

    public ServletContext getServletContext(){

        if(servletContext != null){

            return servletContext;

        }

        return ServletActionContext.getServletContext();

    }

    public HttpSession getSession(){

        if(session != null){

            return session;

        }

        return getRequest().getSession();

    }

}
///////////////// 2. LoginAction

package test.action;

public class LoginAction extends BaseAction{

    //定义封装请求参数的username和password属性

    private String username;

    private String password;

    

    public String getUsername(){

        return username;

    }

    public void setUsername(String username){

        this.username = username;

    }

    public String getPassword(){

        return password;

    }

    public void setPassword(String password){

        this.password = password;

    }

    //注册Action

    public String regist() throws Exception {

        System.out.println(this.getRequest().getAttribute("username"));

        this.getRequest().setAttribute("username", "regist");

        return SUCCESS;

    }

    //默认的登陆Action

    public String execute() throws Exception {

        // 1. 通过request对象得到表单的值

        System.out.println(this.getRequest().getParameter("username"));

        // 2. 直接通过getter和setter得到表单的值

        if (getUsername().equals("a")&& getPassword().equals("a")){

            // 3. 设置、得到session的值

            this.getSession().setAttribute("username", "ok");

            System.out.println(this.getSession().getAttribute("username"));

            // 4. 设置响应的字符串

            this.getResponse().setCharacterEncoding("UTF-8");

            this.getResponse().getWriter().print("ccccc");

            return SUCCESS;

        } else {

            return ERROR;

        }

    }

}

7. 其它跳转页面welcome.jsp

<body>

      登陆成功!<%=request.getAttribute("username")%><br>

      <a href="login.jsp">退出</a><hr>

</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息