Struts2 笔记第一天

Struts2 笔记第一天

  • 创建工程引入Struts2支持
  • Struts2配置文件
  • 请求分发处理
  • 使用Struts2自带标签库

创建工程引入Struts2支持

  1. 加入Struts2的jar包到WEB-INF 的lib目录下
  2. WEB-INF目录下的web.xml配置Struts2的信息
  3. src目录下配置struts.xml

或者利用myeclipse自动创建Struts2支持

web.xml配置文件

基本模版:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts Blank</display-name>

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

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>`

Struts2配置文件

  • 基本模版:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>
</struts>
  • namespace : 命名空间,与请求路径和分发请求路径有关
  • action : 请求的映射
  • result : 请求的结果

请求分发处理

Struts2 是以拦截器来拦截请求的,通过拦截的url路径的后缀名来映射到指定的处理逻辑类去。常用的有:xxx.do , xxx.action , /*

Struts2 映射 处理逻辑类的配置方式:(注意相对路径与绝对路径对其影响,路径前加/为绝对路径,否则为相对路径)

  • 传统形式 : 对应的url www.skycoop.com/sub.do
  <action name="sub" class="FirstAction" method="sub">
     <result name="back">index.jsp</result>
  </action>
  • 动态方法,使用占位符 : 对应的url www.skycoop.com/cal_demo.do
  <action name="cal_*" class="FirstAction" method="{1}">
     <result>index.jsp</result>
  </action>
  • 使用!分割符,struts2配置文件对应第一种方式,请求会分发到指定的方法去
<a href="vote!listVote.do">参加投票</a><hr>
  • 使用元数据,可与xml配置共存

struts2配置文件启动元数据

   <!-- 启用元数据配置action -->
   <constant name="struts.convention.action.package" value="com.j1063.action"/>
   <!-- Convention插件定位视图资源的根路径。默认值为/WEB-INF/content -->
   <constant name="struts.convention.result.path" value="/"/>

在逻辑处理类中,配置元数据

@ParentPackage("struts-default")
public class VoteAction extends ActionSupport {
    @Action(value="loadV",results={@Result(location="/vote/listVote.jsp")})
    public String loadVote(){
        //逻辑处理
    }
}

逻辑处理类:类似Servlet的功能类

3种形式: 1. 以pojo的形式来写 2.继承ActionSupport类 3.继承Action接口(推荐使用第二种方式来写)

模版:

public class FirstAction extends ActionSupport{

    //表单
    private int num1;

    //默认处理请求的方法
    public String execute(){
        
        return "success";  //默认返回值success
    }
    //自定义的处理请求的方法
    public String sub(){
        //处理请求的逻辑
        return "back"; 
    }

    //get/set方法
    public int getNum1() {
        return num1;
    }
    public void setNum1(int num1) {
        this.num1 = num1;
    }   
}

模块化开发

src目录下可随意新建xxx.xml的文件来配置属于某个模块的Strust2配置。原始的Strust2配置只要引用包含这个文件,就可以将其配置引入。

源配置:

   <!-- 导入配置,模块化协作开发 -->
   <include file="cfg/struts2/*" ></include>

使用Struts2自带标签库

  1. 引入标签库 <%@taglib uri="/struts-tags" prefix="s" %>
  2. 不能使用EL表达式,使用值栈来获得所需的值,用#来引用在值栈外的值
  3. <s:debug/> 可以查看值栈
  4. struts2集合标签:<s:radio list={"1","2",""3}></s:radio> 键值对:<s:radio list="#{0:'熟练',1:'了解',2:'初学',4:'不知所云'}" name="uprcc" label="您掌握的程度"></s:radio>值栈中可迭代的:<s:radio list="voteslkts" value="wendActDefauklt" name="wendAct" listKey="sid" listValue="votedest" label="周末活动"></s:radio>
  5. 解决中文乱码:post:<constant name="struts.i18n.encoding " value="UTF-8"/> get:在server.xml容器中设置
  6. Tomcat运行时struts2标签必须能被Struts2框架拦截,否则无法生效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值