Struts2总结优化登录与转发_02
优化登录:

使用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的更多相关文章
- 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验
一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...
- java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面
第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...
- 移动IM开发指南3:如何优化登录模块
<移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- Struts2中重定向和请求转发配置
struts2中默认跳转为dispatcher请求转发 只能往jsp转发,跳转action报404 重定向 设置为redirect ,可以是jsp也可以是action <!--同一个包下的act ...
- 基于Struts2框架实现登录案例 之 程序国际化
国际化牵涉的知识非常多,这里只能简单的介绍,程序国际化的一般做法是:在jsp页面时, 不是直接输出信息,而是输出一个key值,该key值在不同语言环境下找到对应资源文件下的 对应信息,因此首先要创建满 ...
- 基于Struts2框架实现登录案例
一,准备工作 1)新建web项目,并导入Struts2jar文件和配置web.xml文件. struts2 jar文件 web.xml文件 <?xml version="1.0&qu ...
- 基于Struts2的用户登录程序
基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入strut ...
- Struts2拦截器登录验证
Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...
随机推荐
- SQL中创建外键约束
alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名)
- VSTO在幻灯片里面添加按钮对象
//添加Form窗体,窗体中添加Image控件,单击弹出"PPT"信息提示 //命名引用:using MF = Microsoft.Vbe.Interop.Forms; priva ...
- 如何解决wamp中数据库读取数据是???的情况?
数据库中数据正常,但是从数据库读取出的数据在网页中显示时是???,该怎么办呢? 左键点击托盘区的WampServer图标,选择Mysql--my.ini,就会打开配置文件 1.在[client]段落增 ...
- Cordova各个插件使用介绍系列(一)—$cordovaSms发送短信
详情链接地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-1-cordovasms/ 这是调用手机发送短信的插件 ...
- Loadrunner12解决无法录制chrome及脚本为空问题
首先,得安装LR12,一般用LR12录制,由于未破解,用LR11跑并发. LR12官方文档说明里是支持chrome及火狐的,但是实际录制起来,还是有一定的问题,目前发现的问题主要有两个: (1)LR录 ...
- linux软件包介绍
一. 软件包的种类 源码包 二进制包(rpm包.系统默认包) 二. 优缺点对比 源码包 源码包的优点 1) 开源,源码可见,且可以修改 2) 配置更加灵活,可以自由选择所需的功能 3) 软件是编译安装 ...
- Ionic 2+ 安卓环境搭建
安装 安卓studio https://developer.android.com/studio/index.html 设置一个环境变量 _JAVA_OPTIONS:-Xmx512M 添加androi ...
- 暂停和播放CSS3动画的两种实现方法
1,直接修改animationPlayState <!DOCTYPE html> <html> <head lang="en"> <met ...
- Vijos 1111 小胖的水果 LCS
描述 xuzhenyi到大同水果店去买水果,但老板huyichen告诉他每次只能买一种,但是xuzhenyi想吃两种,于是在讨价还价之后,huyichen说只要xuzhenyi能把他想要的两种水果合并 ...
- 如何在docker配置asp.net core https协议
本文参考自<Step by step: Expose ASP.NET Core over HTTPS with Docker> 自从微软发布.net core以来,就在许多社区掀起了讨论, ...