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中的编码一致即可。