优化登录:

使用Struts2中的标签时,会生成大量的tr、td等,决定不使用Struts2中的标签,改用EL表达式,表单有大量数据时,不适合在控制层编写,所以用实体类封装URL中的参数。

控制层代码:

package controller;

import services.UserInfoService;

import com.opensymphony.xwork2.ActionSupport;

import entity.UserInfo;

public class Login  extends ActionSupport {
    private UserInfo user = new UserInfo();
    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }
    @Override
    public void validate(){
        super.validate();
        if("".equals(this.user.getUsername())){
            //this.addActionError("用户名不能为空!!");
            this.addFieldError("username","用户不能为空!!");
        }
        if("".equals(this.user.getPassword())){
            //this.addActionError("密码不能为空!!");
            this.addFieldError("password","密码不能为空!!");
        }
    }
    public String execute(){
        return null;
    }
}

addFieldError是使用Map进行存储出错信息
AddActionError是使用list进行存储出错信息

配置文件:

<?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>
    <constant name="struts.devMode" value="true"/>
    <!--  <constant name="struts.ui.theme" value="simple"/>-->
    <package name="struts2login" extends="struts-default">
        <action name="login" class="controller.Login">
            <result name="success">/true.jsp</result>
            <result name="error">/false.jsps</result>
            <result name="OK">/ok.jsp</result>
            <result name="NO" >/no.jsp</result>
            <!-- 当调用Login.java类中的this.addFieldError()函数时,说明验证没有通过,则转到哪个JSP页面进行报错信息的显示
                  如果在Struts2中使用ActionSupport类进行有刷新验证,必须在配置文件中配置名为input的<request>,不然将报错
             -->
            <result name="input">/login.jsp</result>
        </action>
    </package>
</struts>

Struts2中的转发操作:

转发操作是在服务器端的行为,使用一个request对象!可以在request作用域中存入对象,最终显示在JSP页面!

Struts中的转发操作主要是在配置文件struts.xml中进行配置,使用type="dispatcher"属性进行定义,
写不写type这个属性对操作没有任何影响,默认情况下不谢type属性就是转发操作,在struts-default.xml中
有默认定义

result-types:可以返回的种类
dispatcher有一个default属性,且值为true:如果在result中不定义type,即默认是转发操作

当result的类型是reddirect:通常由Action重定向到一个JSP页面使用
当result的类型是redirectAction:通常定义重定向到一个Action

Action重定向到Action(无参数):
配置文件关键代码:

<action name="login" class="controller.Login">
<result name="list" type="redirectAction">
<param name="actionName">list</param>
</result>
</action>
<action name="list" class="controller.ListString">
<result name="listJSP">/listinfo.jsp</result>
</action>

Action重定向到Action(有参数):

配置文件关键代码:

<?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>
    <package name="ghyStruts1" extends="struts-default">
        <action name="login" class="controller.Login">
            <result name="list" type="redirectAction">
                <param name="idInList">${id}</param>
                <param name="actionName">ListInfo</param>
            </result>
        </action>

        <action name="ListInfo" class="controller.List">
            <result name="bookListJsp">/bookjsp.jsp</result>
        </action>
    </package>

</struts>

Struts2总结优化登录与转发_02的更多相关文章

  1. 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验

    一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...

  2. java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面

    第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...

  3. 移动IM开发指南3:如何优化登录模块

    <移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...

  4. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  5. Struts2中重定向和请求转发配置

    struts2中默认跳转为dispatcher请求转发 只能往jsp转发,跳转action报404 重定向 设置为redirect ,可以是jsp也可以是action <!--同一个包下的act ...

  6. 基于Struts2框架实现登录案例 之 程序国际化

    国际化牵涉的知识非常多,这里只能简单的介绍,程序国际化的一般做法是:在jsp页面时, 不是直接输出信息,而是输出一个key值,该key值在不同语言环境下找到对应资源文件下的 对应信息,因此首先要创建满 ...

  7. 基于Struts2框架实现登录案例

    一,准备工作  1)新建web项目,并导入Struts2jar文件和配置web.xml文件. struts2 jar文件 web.xml文件 <?xml version="1.0&qu ...

  8. 基于Struts2的用户登录程序

    基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入strut ...

  9. Struts2拦截器登录验证

    Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...

随机推荐

  1. Cordova各个插件使用介绍系列(四)—canvas2ImagePlugin保存二维码到手机本地

    详情链接地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-4-canvas2imageplugin/ 在前面几篇 ...

  2. javaScript操作DOM对象(看三遍,敲三遍,写三遍! 不会你找我)!!

    DOM是Document Object Model的缩写,即文档对象模型,是基于文档编程的一套API 使用javaScript操作DOM对象通常分为三类:1.DOM CORE        2.HTM ...

  3. 关于MATLAB处理大数据坐标文件2017527

    第一次提交数据: 今天用了8个特征,加上的这一个特征是 从3000条测试数据中测试失败的数据总结出来的树的数目为50再次使用3000条测试数据测试结果-- 结果不错: 99%但是运行官网数据结果分数- ...

  4. 大话Python中*args和**kargs的使用

    对于初学者来说,看到*args和**kargs就头大,到底它们有何用处,怎么使用?这篇文章将为你揭开可变参数的神秘面纱 1.*args 实质就是将函数传入的参数,存储在元组类型的变量args当中 de ...

  5. jquery让页面滚动条top,滚动条 顶部

    jquery让页面滚动条top,滚动条 顶部$(document).scrollTop(0);

  6. LVS工作模式与调度算法

    LVS三种工作模式.十种调度算法介绍 工作模式介绍: 1.Virtual server via NAT(VS-NAT) 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配 ...

  7. 增广拉格朗日乘子法(Augmented Lagrange Method)

    转载自:增广拉格朗日乘子法(Augmented Lagrange Method) 增广拉格朗日乘子法的作用是用来解决等式约束下的优化问题, 假定需要求解的问题如下: minimize f(X) s.t ...

  8. [leetcode-438-Find All Anagrams in a String]

    Given a string s and a non-empty string p, find all the start indices of p's anagrams in s.Strings c ...

  9. 【Android Developers Training】 14. 序言:管理Activity生命周期

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  10. Texlive + TexStudio + Language Tool Win7配置

    Texlive的配置很简单,安装的时候跟着向导一步一步安装就可以了. TexStudio也是同样的安装过程,没什么技巧.这里提一下界面颜色的配置.习惯了暗底白字,所以就google了一下相关的配置,大 ...