标签:
Struts2的配置及入门案例
步骤一、创建JavaWeb项目
步骤二、导入Struts2框架所需的基础jar文件添加到lib目录下
步骤三、在web.xml文件中配置StrutsPrepareAndExecuteFilter
Struts2框架是基于MVC模式开发的,它提供了一个核心控制器,用于对所有的请求进行统一管理,这个控制器是由一个名为StrutsPrepareAndExecuteFilter的Servlet过滤器来充当
注意:关于Struts2的核心控制器配置,早期Struts2版本的核心控制器为
而2.1.3之后的版本普遍采用。我们需要根据自己的Struts2的版本进行配置
在web-app节点下配置
步骤四、编写Action类
一个action类就是一段只有特定URL被请求时才会执行的代码,StrutsPrepareAndExecuteFilter根据请求URL的不同,来执行对应的action,在Struts2中,action执行的结果(成功或失败)通常都对应着一个要呈现给用户的result
1 package cn.hmy.action; 2 3 import com.opensymphony.xwork2.Action; 4 5 public class HellAction implements Action{ 6 7 private String name; 8 9 public String execute() throws Exception { 10 this.setName("hello,"+this.getName()); 11 return "success"; 12 } 13 14 public String getName() { 15 return name; 16 } 17 18 public void setName(String name) { 19 this.name = name; 20 } 21 22 }
步骤五、编写结果页面
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 <%@taglib uri="/struts-tags" prefix="s" %> 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>Hello</title> 13 14 </head> 15 16 <body> 17 <div> 18 <h1> 19 <!--显示Struts Action中的message的属性内容 --> 20 <s:property value="name"/> 21 </h1> 22 </div> 23 <hr/> 24 <div> 25 <form action="hello" method="post"> 26 请输入您的姓名:<input name="name" type="text"/> 27 <input type="submit" value="提交"/> 28 </form> 29 </div> 30 </body> 31 </html>
步骤五、创建Struts2的配置文件。在src目录下创建struts.xml文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 7 <constant name="struts.devMode" value="true"></constant> 8 <package name="default" namespace="/" extends="struts-default"> 9 10 <!--第二个loginAcrion的配置 --> 11 <action name="login" class="cn.hmy.action.LoginAction"> 12 <result name="success">success.jsp</result> 13 <result name="login">login.jsp</result> 14 </action> 15 16 17 <!-- 第一个hellAction的配置 --> 18 <action name="hello" class="cn.hmy.action.HellAction"> 19 <result name="success">index.jsp</result> 20 </action> 21 22 </package> 23 </struts>
在struts.xml文件中,每一个result属性的name名称都要与Action中返回的逻辑名称保持一致;否则,程序在运行时将无法正确运行
步骤五、编译部署并启动服务器,访问index.jsp
用debug标签查看值栈信息
Struts2访问servlet API对象的两种方式
1.与servlet API解耦的访问方式
001.使用ActionContex类获取Servlet API对象对应的Map对象
为了避免与Servlet API耦合在一起,方便Action类的测试,Struts2框架使用了普通的Map对象替代了Servlet API中的HttpServletRequest、HttpServletResponse和ServletContext.在Action类中,可以直接访问HttpServletRequest、HttpSession和ServletContext对应的Map对象,Struts2提供了com.opensymphony.xwork2.ActionContext类获取ServletAPI对象对应的Map对象
public Object get(Object key)
ActionContext类没有提供getRequest()这样的方法来获取HttpServletRequest对应的Map对象,要想得到HttpServletRequest对象对应的Map对象需要为get()方法传递request参数
2.与Servlet API耦合的访问方式
标签:
原文地址:http://www.cnblogs.com/hmy-1365/p/5825546.html