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!

 

 

原文地址:https://www.cnblogs.com/haaron/p/5113872.html