1、struct2第一个项目登陆流程

这些jar包的作用:第一个日志记录

第二个 使用freemarker制作页面,freemarker和jsp一样都是页面操作的

ognl是struct2提供的向el标签设置的包

struct2-core是struct2的核心jar包

struct2是从xwork继承而来的,struct2中的拦截器都是使用的是xwprk中的

最后一个文件上传使用appach的fileupload进行上传

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

4、

 6、创建action对象

Struts2登录

需要注意:Struts2需要运行在JRE1.5及以上版本

1、创建Java Web项目

2、引入Struts2的依赖包,将依赖包拷贝到WEB-INF/lib下
    * commons-logging-1.0.4.jar
    * freemarker-2.3.15.jar
    * ognl-2.7.3.jar
    * struts2-core-2.1.8.1.jar
    * xwork-core-2.1.6.jar
    * commons-fileupload-1.2.1.jar
    
3、在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher
    <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>
    

4、提供struts2配置文件struts.xml,放到src下

5、建立JSP(login.jsp、login_success.jsp、login_error.jsp)

6、创建Struts2的Action,Struts2的action可以不用继承Struts2框架中的任何类
   也不用实现Struts2框架中的任何接口,所以Struts2的Action可以是一个POJO(纯粹的Java对象)
   所以Struts2的Action测试更容易
   
   Struts2缺省方法名称:public String execute() throws Exception;
   
7、在Action中提供getter和setter方法,便于收集数据(这样收集数据的模式一般可以成为属性驱动模式)
 Action是有struct2使用反射模式生成的,然后在调用action之前,struct2的拦截器调用getter和settter方法将属性传递给action

8、将JSP和Action配置到struts.xml配置文件中

9、了解struts-default.xml配置文件,default.properties,Struts2的默认后缀为.action

      

我们来看下程序的代码:

package com.weiyuan.test;

/**
 * struct2的action可以不继承任何框架的接口
 * 1、默认调用的是execute()方法
 * */
public class LoginAction {
    private String username;
    private String password;
    
    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;
    }

    public String execute() throws Exception{
        System.out.println("execute is called");
        System.out.println("execute is called" +username);
        System.out.println("execute is called"+password);
        if("admin".equals(username)&&"admin".equals(password)){
            return "success";
        }else{
            return "error";
        }
    }

}

struct.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>
<!-- 需要继承extends="struts-default",否则struct2的拦截器就无法使用 -->
<package name="struct2"  extends="struts-default">
   <action name="login" class="com.weiyuan.test.LoginAction">
      <result name="success">/login_sucess.jsp</result>
      <result name="error">/login_error.jsp</result>
   </action>
</package>

</struts>

这里要强调几点:

1、 

<result name="success">/login_sucess.jsp</result>里面的名字success必须和
LoginAction中return返回的字符串一一对应,名字不能发送改变
2、struct2以包名对action进行管理,同一模块下的action可以放在同一个包下面,包必须继承struts-default才能保证struct2的拦截器能够正常使用
3、
class="com.weiyuan.test.LoginAction">需要指定action所在的全类名
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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="login.action">
      用户:<input type="text" name= "username"><br>
     密码 :<input type="text" name="password"><br>
   <input type="submit" value=" 登陆">     
    </form>
</body>
</html>
1、上面login.action中的login必须和struct.xml中的 <action name="login" class="com.weiyuan.test.LoginAction">中name的名字一一对应,action是struct2默认的后缀名
login_sucess.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
登陆失败
</body>
</html>

login_sucess.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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
登陆成功
</body>
</html>
整个工程的架构如下所示:





原文地址:https://www.cnblogs.com/kebibuluan/p/7999162.html