【J2EE核心开发学习笔记 011】Struts2常用开发技能
来源:互联网 发布:python fix 编辑:程序博客网 时间:2024/05/16 11:35
一、Struts2的刷新验证功能
1.1 Action接口
在Struts2中验证功能使用ActionSupport.java类实现,使用的方式是从控制层继承它即可,它的继承关系如下:
public class ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable
我们可以看到ActionSupport实现了6个接口,其中,Action接口主要作用是提供一个execute()访问接口,所有的控制层必须要实现此方法。
在Action接口中声明了5个常量,这5个常量就是execute()方法返回的字符串可以使用的result逻辑名称,常用的有success(成功)和error(出错)。通过实现Action接口就可以将result对象的名称进行标准化。常量值如下所示:
1.2 Validateable和ValidationAware
Validateable接口只有一个方法validate(),ActionSupport的子类必须覆盖该方法来实现自定义验证功能。
Validateable接口中validate()方法的功能是把自定义验证代码放在里面执行,那么如何才能对出错信息进行进一步的处理呢?此时就需要ValidationAware接口。ValidationAware接口规定了如果验证出错应该用哪些方法来对出错信息进行处理。
1.3 TextProvider和LocaleProvider接口
TextProvider接口的作用是从properties属性文件中取得资源文本,它的声明内容如下:
而LocaleProvider接口的主要作用就是访问国际化的环境,根据不同的国家语言环境,就可以从不同语言的properties文件中取出对应的文本资源,LocaleProvider接口的声明如下。
1.4 使用ActionSupport实现由刷新的验证
该功能主要是使用Action接口的execute()和Validateable接口的validate()实现。
创建名为Struts2CommonFunction的Web项目
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <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> <welcome-file-list> <welcome-file>login.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!-- 声明常量(开发模式) --> <constant name="struts.devMode" value="true" /><!-- 声明包 --> <package name="myPackage" namespace="/" extends="struts-default"> <action name="login" class="com.actionsupport.action.Login"> <result name="toOKJSP">/ok.jsp</result> <result name="toNOJSP">/no.jsp</result> <result name="input">/login.jsp</result> </action> </package></struts>
控制层Login.java代码
package com.actionsupport.action;import com.actionsupport.service.UserInfoService;import com.opensymphony.xwork2.ActionSupport;public class Login extends ActionSupport {private String username;private String password;@Overridepublic void validate() {// TODO Auto-generated method stubsuper.validate();if("".equals(this.getUsername())){this.addFieldError("username","对不起,用户名不可以为空!");//通过使用addFieldError方法可以对出错信息进行处理//再将这些出错信息文本在JSP页面上显示}if("".equals(this.getPassword())){this.addFieldError("password","对不起,密码不可以为空!");}}@Overridepublic String execute() throws Exception {UserInfoService usRef = new UserInfoService();if(usRef.login(username, password)){return "toOKJSP";}else{return "toNOJSP";}}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;}}业务层UserInfoService.java
package com.actionsupport.service;public class UserInfoService { publicboolean login(String str1,String str2){ if(str1.equals("张三")&&str2.equals("123")){ return true; }else{ return false; }}}视图层login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'Login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> <s:form action="login" method="post"> <s:textfield name="username" label="用户名"></s:textfield> <s:textfield name="password" label="密码"></s:textfield> <s:submit value="提交"></s:submit> </s:form> </body></html>
测试:
运行程序什么都不输入单击提交按钮
二、Struts2国际化
三、重定向与转发
四、多模块处理
五、紧耦合和松耦合开发
- 【J2EE核心开发学习笔记 011】Struts2常用开发技能
- 【J2EE核心开发学习笔记 012】Struts2文件的上传与下载
- 【J2EE核心开发学习笔记 005】Servlet开发
- 【J2EE核心开发学习笔记 009】MyBatis3操作数据库(CURD)
- 【J2EE核心开发学习笔记 006】HTTP协议
- 【J2EE核心开发学习笔记 007】 Cookie Session会话管理
- 【J2EE核心开发学习笔记 001】IO基础
- 【J2EE核心开发学习笔记 002】线程基础
- 【J2EE核心开发学习笔记 003】网络基础
- J2EE--Struts2基础开发笔记
- 【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录
- Struts2+Ibatis开发J2EE系统学习(1)
- 【J2EE核心开发学习笔记 008】JSP的九大内置对象和四个作用域
- j2ee学习struts2 笔记
- J2EE开发学习笔记(4)
- J2EE开发常用
- [J2EE学习笔记01]配置标准的J2EE开发环境
- 【J2EE核心开发学习笔记 004】通过JDBC进行简单的增删改查(以MySQL为例)
- linux系统编程之基础必备(五):Linux进程地址空间和虚拟内存
- 2016世界机器人大会参后感
- 初级软件测试工程师的面试
- JavaScript 比较和逻辑运算符
- Java二进制兼容性
- 【J2EE核心开发学习笔记 011】Struts2常用开发技能
- 在android中读取联系人信息的程序,包括读取联系人姓名、手机号码和邮箱
- mybatis配置
- 使用百度地图API获取经纬度
- 利用MediaPlayer来实现Notification通知铃声
- 二维数组作为函数参数传递(C++)
- JavaWeb 发送 激活邮件功能
- 课堂笔记2
- Leetcode||8.String to Integer (atoi)