Struts2的基本使用

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="注册" οnclick="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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值