Struts 2 初学的复习巩固

Q:使用Struts2 开发程序的基本步骤?

A:

1)加载Struts2类库;

2)配置web.xml文件,定义核心Filter来拦截用户请求;

3)开发视图层页面,即JSP页面;

4)定义处理用户请求的Action类;

5)配置struts.xml来配置Action和配置处理结果和物理试图资源之间的对应关系,如

<action name="login" class="com.zifo.action.LoginAction">
    <result name="success">/success.jsp</result>
    <result name="input">/index.jsp</result>
</action>

6)部署、运行项目。

Q:Struts2中如何获取Servlet的session对象?

A:

在Struts2中访问Servlet的session对象有两种方式:与ServletAPI解耦的方式访问和与ServletAPI耦合的方式访问。

1)解耦的方式:

public String execute(){
    if(username.equals("admin") && password.equals("akdz04b")){
        Map<String,Object> session = null;
        session = ActionContext.getContext().getSession();
        //CURRENT_USER的定义为private static final String CURRENT_USER = "CURRENT_USER";
        if(session.containsKey(CURRENT_USER)){
            session.remove(CURRENT_USER);
        }
        session.put(CURRENT_USER, username);
        return "success";
    }else{
        return "fail";
    }
}

2)耦合的方式

public String execute(){
    if(username.equals("admin") && password.equals("akdz04b")){
        HttpSession session = null;
        session = ServletActionContext.getRequest().getSession();
        if(session.getAttribute(CURRENT_USER) != null){
            session.removeAttribute(CURRENT_USER);
        }
        session.setAttribute(CURRENT_USER, username);
        return "success";
    }else{
        return "fail";
    }
}

Q:Strust2表单标签和普通HTML表单标签有什么不同之处?如何解决表单中的中文乱码问题?

A:

Struts2中的<s:form>可以认为是把html中的<form>标签封装扩充了一些功能。下面是struts2文档中对<form>标签的描述

http://struts.apache.org/release/2.3.x/docs/form.html

至于出现乱码,原因是因为struts2的默认提交字符编码与JSP页面的编码不一致造成的。

一般来讲,默认提交汉字字符编码是UTF-8,则需要做如下配置:

在struts.xml中<struts>标签下,<package>标签之上添加:

<constant name="struts.i18n.encoding" value="UTF-8" />

在JSP页面编码修改为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

即保证JSP页面和struts.xml中的编码一致即可。

原文地址:https://www.cnblogs.com/zifo/p/3399648.html