struts2初学 之入门

前段时间看了一些关于struts2的书籍和帖子,学了一些东西。现在把它写下来,方便以后的学习
首先的感觉是struts2还是比较简洁的,从表面看来也比较简单,可是功能却很强大。
介绍一下我的入门例子吧

我是用eclipse3.3+tomcat5.5+struts2 2.0.6 来做的。首先要建立一个tomcat工程,这很简单,然后把struts2的jar包加入进去。

做一个入门的例子需要的jar包很少,现在把它们列出来
commons-logging-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.6.jar
xwork-2.0.1.jar

现在只需要这几个.
struts2有两个配置文件,web.xml和struts.xml
1 先来看一下web.xml吧
因为struts2是基于webwork核心的,其核心类是一个转发器:

  1. <?xml version="1.0" encoding="GBK"?>
  2. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  5. <filter>
  6. <filter-name>struts2</filter-name>
  7. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>struts2</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. </filter-mapping>
  13. </web-app>


看到了吧,在这个web.xml文件中是不需要配置标记库的,因为 struts2会自动找到它们,并且struts2只有一个标记库,你只要在JSP页面里声明一下引用就可以了。
2 相应的登陆JSP login.jsp:

  1. <%@ page language="java" contentType="text/html; charset=GBK"%>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <html>
  4. <head>
  5. <title><s:text name="loginPage"/></title>
  6. </head>
  7. <body>
  8. <s:form action="Login">
  9. <s:textfield name="username" key="user"/>
  10. <s:textfield name="password" key="pass"/>
  11. <s:submit key="login"/>
  12. </s:form>
  13. </body>
  14. </html>

这里key引用了国际化里相应的配置,s就是标记了,没有像struts1那样定义了几个标记库。
3 struts2的action
struts2将struts1的action和actionform集成了起来,全部放在了action里,当然这里可以使用模型驱动模式来把他们分开,不过对于属性相对较少的情况也不会有什么混乱

  1. public class LoginAction implements Action
  2. {
  3. private String username;
  4. private String password;
  5. public String getUsername()
  6. {
  7. return username;
  8. }
  9. public void setUsername(String username)
  10. {
  11. this.username = username;
  12. }
  13. public String getPassword()
  14. {
  15. return password;
  16. }
  17. public void setPassword(String password)
  18. {
  19. this.password = password;
  20. }
  21. public String execute() throws Exception
  22. {
  23. if (getUsername().equals("123")
  24. && getPassword().equals("123") )
  25. {
  26. ActionContext.getContext().getSession().put("user" , getUsername());
  27. return "success";
  28. }
  29. else
  30. {
  31. return "error";
  32. }
  33. }

action是不是很简单呢,看看他的execute()方法,体现了和servlet的分离
4 输出页面的jsp welcome.jsp:

  1. <%@ page language="java" contentType="text/html; charset=GBK"%>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <html>
  4. <head>
  5. <title><s:text name="succPage"/></title>
  6. </head>
  7. <body>
  8. <s:text name="succTip">
  9. <s:param>${sessionScope.user}</s:param>
  10. </s:text>
  11. </body>
  12. </html>


5 struts.xml

  1. <?xml version="1.0" encoding="GBK"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <package name="test" extends="struts-default" >
  7. <action name="Login" class="test.LoginAction" >
  8. <result name="error">/testjsp/error.jsp</result>
  9. <result name="success">/testjsp/welcome.jsp</result>
  10. </action>
  11. </package>
  12. <constant name="struts.custom.i18n.resources" value="messageResource" />
  13. </struts>

这里只定义了action和国际化的东西
好了,现在就可以测试了


这是一个最简单的入门测试的例子,写下来为了能够记住
其实struts2还有很多的功能,像拦截器,模型驱动,和servelt的接口问题等等
要学的东西还很多

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值