zoukankan      html  css  js  c++  java
  • Struts2整理-----Struts2入门

     

    Struts2简介

    struts2是在webwork2基础上发展而来的。和struts1一样,struts2也属于MVC框架。不过有一点需要注意的是:struts2和struts2虽然名字很相似,但是在两者在代码编写风格上几乎是不一样的。那么既然有了struts1,为什么还要推出struts2。主要的原因是struts2有以下优点:

    1.在软件设计上struts2不依赖于servlet API和struts API。而struts1跟servlet API和struts API有着紧密的耦合;struts2的应用可以struts2的这种设计属于无侵入式设计,而struts1却属于侵入式设计。

    2.struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。

    3.struts2提供了类型转换器,可以把特殊的请求参数转化成需要的类型。在struts1中,如果我们要实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器才行。

    4.struts2提供支持多种表现层技术,如:jsp、freemarker、velocity等。

    5.struts2的输入校验可以对指定的方法进行校验,解决了struts1长久之痛。

    6.提供了全局范围、包范围和Action范围的国际化资源文件实现。

    另外struts2源码项目使用maven构建。这里提供struts-2.3.24源码包 http://pan.baidu.com/s/1mgVZAVu

     

    Struts2开发环境搭建

    step1:新建工程

      eclipse新建web项目,项目名struts2demo

    step2:导入jar包

      commons-fileupload-1.2.1.jar
      commons-logging.jar
      freemarker-2.3.12.jar
      ognl-2.7.3.jar
      struts2-core-2.1.8.1.jar
      xwork-core-2.1.6.jar

    step3:配置web.xml文件

    <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>  

    从上面可以看出,struts2框架是通过filter启动的。在StrutsPrepareAndExecuteFilter的init()方法中读取类路径下默认的配置文件struts.xml完成初始化操作。

    PS:struts2读取到struts.xml中的内容后,以javabean的形式保存在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件。

    step4:新建Action

    package com.aaron.action;
    
    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport {
    
        private String name;
        private String password;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String execute() {
            return SUCCESS;
        }
    
        public String login() {
            String msg = "登录成功!";
            Map<String, Object> map = ActionContext.getContext().getSession();
            if ("aaron".equals(name) && "123456".equals(password)) {
                map.put("msg", msg);
                map.put("name", name);
                return SUCCESS;
            } else {
                msg = "用户名或密码错误!";
                map.put("msg", msg);
                return LOGIN;
            }
        }
    
    }
    UserAction.java

    step5: 新建视图页面

    登录页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>登录页面</title>
    </head>
    <body>
        <form action="login" method="post">
            <h3><font color="red">${msg}</font></h3><br>
            用户名:<input type="text" name="name" /><br>
             密码:<input type="password" name="password" /><br>
            <input  type="submit" value="提交" name="提交" />
            <input  type="reset" value="重置" name="重置" />
        </form>
    </body>
    </html>
    login.jsp

    登录成功页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>登录成功</title>
    </head>
    <body>
    <h3><font color="red">${msg}</font></h3>
    <h2>欢迎${name}!</h2>
    </body>
    </html>
    success.jsp

    step6:配置struts文件

    <package name="default" extends="struts-default" namespace="/">
            <action name="login" class="com.aaron.action.UserAction" method="login">
                <result name="success">success.jsp</result>
                <result name="login">login.jsp</result>
            </action>
    </package>

    step7:测试

    输入地址:http://localhost:8080/struts2demo

    测试OK!

     

     

  • 相关阅读:
    Django基础——Form&Ajax篇
    redis--悲观锁、乐观锁
    redis--事务
    redis--三种特殊数据类型---的简介、用法
    redis--zet(有序集合)---常用命令、场景
    redis--hash(哈希)---常用命令、场景
    redis--set(无序集合)--的常用命令,应用
    redis--(队列)list--常用命令、小结
    redis--string(字符串) --常用命令、应用场景
    redis基本知识
  • 原文地址:https://www.cnblogs.com/haaron/p/5113872.html
Copyright © 2011-2022 走看看