Struts2的背景

  1. 由出色稳定的框架struts1和webwork框架整合而来的
  2. 吸取了两大框架的优点
  3. 提高了开发的效率和规范性
  4. 更好的实现了MVC架构
  5. 解除了与servlet的强耦合性

使用struts2框架的意义

  1. 更敏捷的开发
    1. 自动封装表单提交数据:属性驱动,模型驱动
    2. 便捷的实现上传文件:fileupload
    3. 使网站通用于国内外:国际化
    4. 通过配置完成表单验证:校验器
    5. 强大的标签库:Struts2标签库,OGNL标签库
  2. 更科学的管理
    1. 使用xml文件管理程序文件对应关系
  3. 更安全的操作
    1. 安全的线程机制:每个action都是独立的
    2. 防止了数据的重复提交:token令牌机制
  4. 先进的编程思路
    1. 面向切面编程:拦截器

Helloworld

下载路径:http://struts.apache.org/download.cgi#struts2324

第一步把需要的jar文件拷贝过去

第二步把struts.Xml拷贝过去

如果不连接网络的话就不能提示

需要在myeclipse内配置下,将dtd文件的网址复制到浏览器的地址框中,下载。

或者在struts-2.3.24\src\core\src\main\resources目录内也存在dtd文件。

第三步将关于filter的配置拷贝到web.xml中

Struts.Xml的属性配置

<!-- bean标签用于创建一个JavaBean 实例 -->

<!-- constant该标签用于struts2默认行为标签 -->

<!-- package该标签
包标签
用于区分不同的请求文件的标签

        比如说网站前台请求
网站后台请求-->

<!--include该标签用于引入其他的xml配置文件 -->

 


<?xml version="1.0" encoding="UTF-8" ?>  


<!DOCTYPE struts PUBLIC  


    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  


    "http://struts.apache.org/dtds/struts-2.0.dtd">  


  


<struts>  


    <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->  


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


  


    <!--  


        该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。  


        如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。  


    -->  


    <constant name="struts.action.extension" value="do" />  


  


    <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->  


    <constant name="struts.serve.static.browserCache" value="false" />  


  


    <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->  


    <constant name="struts.configuration.xml.reload" value="true" />  


  


    <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->  


    <constant name="struts.devMode" value="true" />  


  


    <!-- 默认的视图主题 -->  


    <constant name="struts.ui.theme" value="simple" />  


  

 

 

Helloworld的例子

 

输入的表单

<form
action="<%=path %>/new/login.action"
method="post">

            用户名:<input
type="text"
name="username"><br>

            密码:<input
type="text"
name="password"><br>

            <input
type="submit"
value="提交">

        </form>

LoginAction

 

public
class LoginAction {

    private String username;//此处
表单内的name必须与此一致

    private String password;

    public String execute(){

        if (username.equals("admin")&&password.equals("123")) {

            return
"success";

        }else {

            return
"fail";

        }

    }

    

    public String getUsername() {

        return
username;

    }

    public
void setUsername(String username) {

        this.username = username;

    }

    public String getPassword() {

        return
password;

    }

    public
void setPassword(String password) {

        this.password = password;

    }

    

}

配置struts.xml文件 表单中访问的路径也要加上namespace的名字

<package
name="test" extends="struts-default" namespace="/new">

<action
name="login"
class="com.pcx.filter.LoginAction">

<result
name="success">/success.jsp</result>

<result
name="fail">/fail.jsp</result>

</action>

</package>

Struts2的属性驱动和模型驱动帮我们完成了数据的获取和数据的封装。

加入struts2的标签库的支持 <%@tagdlib prefix="s" uri="/struts-tags"%>

 

 

 

 

注意:要想拿到当前应用程序的路径需要在请求的路径前面加上

action="<%=request.getContextPath() %>

 

最新文章

  1. hdu1521 排列组合(指数型母函数)
  2. HDU1518 Square(DFS)
  3. 教程-Delphi各版本与工具下载地址
  4. 在Hibernate中分别使用JDBC和JTA事务的方法
  5. mongodb查询分页优化
  6. Linux下监控磁盘空间的四个命令
  7. zencart 新页面调用好功能代码集:
  8. php将图片以二进制保存到mysql数据库并显示
  9. ActionBar 通用方法
  10. C#中 SQL语句
  11. freeType移植总结①——使用keil编译freeType2库
  12. Mono Touch Table应用
  13. 用Copy命令合并文件
  14. 收集的一些python基础教学博客
  15. 使用efwplusScript开发Winform程序【像小程序那样开发PC软件】
  16. php读取xml中cdata部分方法
  17. 【LeetCode】27. Remove Element (2 solutions)
  18. 当div没有设置宽度,使用width的fit-content和margin:auto实现元素的水平居中
  19. python 定义二维数组
  20. 浅谈C#实现Web代理服务器的几大步骤

热门文章

  1. Servlet基础笔记
  2. iOS 倒计时的一种实现
  3. MariaDB快速批量插入数据的几种办法
  4. MySQL数据库初始
  5. jQuery----五星好评实现
  6. PHP各环境下的伪静态配置
  7. https确实加密了。 抓包是一个中间人攻击过程
  8. Why network port is open but no process attached?(为什么端口被打开,但是没有进程号)
  9. void与NULL详解
  10. Caffe中Layer注册机制