zoukankan      html  css  js  c++  java
  • 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>
    整个工程的架构如下所示:





  • 相关阅读:
    表单提交与后台PHP如何接口?
    json数组转普通数组 普通数组转json数组
    使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
    int(3)和int(10)的区别
    CI 3.0.6 控制器打印base_url 地址不为 localhost的解决方法
    CI3.0控制器下面建文件夹 访问一直404 的解决方法
    http响应需要记住的状态码
    laravel 表单验证 正则匹配
    laravel 加中间件的方法 防止直接打开后台
    Laravel 设置时区
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/7999162.html
Copyright © 2011-2022 走看看