怎么在百度搜索自己的网站,福州市台江区网站,做网站赚什么钱,wordpress国内网站一、先写几个概念#xff1a;
#xff08;一#xff09;、OGNL:
#xff08;1#xff09;、OGNL是Object-Graph Navigation Language的缩写#xff0c;它是一种功能强大的表达式语言#xff0c;通过它简单一致的表达式语法#xff0c;可以存取对象的任意属性#xf…一、先写几个概念
一、OGNL:
1、OGNL是Object-Graph Navigation Language的缩写它是一种功能强大的表达式语言通过它简单一致的表达式语法可以存取对象的任意属性调用对象的方法遍历整个对象的结构图实现字段类型转化等功能。
2、Struts 2默认的表达式语言是OGNL
二、OGNL用法
OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用。
1、“#”主要有三种用途 访问OGNL上下文和Action上下文#相当于ActionContext.getContext()下表有几个ActionContext中有用的属性 名称 作用 例子parameters包含当前HTTP请求参数的Map#parameters.id[0]作用相当于request.getParameter(id)request包含当前HttpServletRequest的属性attribute)的Map#request.userName相当于request.getAttribute(userName)session包含当前HttpSession的属性attribute的Map#session.userName相当于session.getAttribute(userName)application包含当前应用的ServletContext的属性attribute的Map#application.userName相当于application.getAttribute(userName)attr用于按request session application顺序访问其属性attribute#attr.userName相当于按顺序在以上三个范围scope内读取userName属性直到找到为止 用于过滤和投影projecting)集合如books.{?#this.price100}构造Map如#{foo1:bar1, foo2:bar2}。 2、“%”符号的用途是在标志的属性为字符串类型时计算OGNL表达式的值。 3、“$”有两个主要的用途用于在国际化资源文件中引用OGNL表达式。在Struts 2和i18n中配置文件 三、ActionContext 这个东西简单理解就是存action上下文的把request,session,application等全部放进去然后再这个的内部它自己写好了get和set
比如我们后台要用session时直接ActionContext.getContext().getSession();就可以得到sessionl了。 二、后台往前台传值的实例
访问web元素又分为两种类型每种类型下都有两种取值方法
一、取得Map类型request,session,application ——依赖于容器 ——依赖注入ioc主要用这个 二、真实类型 HttpServletRequest, HttpSession, ServletContext的引用: ——依赖于容器 ——依赖注入ioc 下面四个有四个实例分别介绍这四种方法 前台页面
提交表单时四个按钮分别对应四种方法 ?xml version1.0 encodingGB18030 ?
% page languagejava contentTypetext/html; charsetGB18030pageEncodingGB18030%% String context request.getContextPath(); %!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
html xmlnshttp://www.w3.org/1999/xhtml
head
meta http-equivContent-Type contenttext/html; charsetGB18030 /
titleInsert title here/title
/head
bodyform namef action method post
用户名input typetext namename/
密码input typetext namepassword/br /
input typebutton valuesubmit1 οnclickjavascript:document.f.actionlogin/login1;document.f.submit(); /
input typebutton valuesubmit2 οnclickjavascript:document.f.actionlogin/login2;document.f.submit(); /
input typebutton valuesubmit3 οnclickjavascript:document.f.actionlogin/login3;document.f.submit(); /
input typebutton valuesubmit4 οnclickjavascript:document.f.actionlogin/login4;document.f.submit(); /
/form/body
/html 效果如图 structs.xml ?xml version1.0 encodingUTF-8 ?
!DOCTYPE struts PUBLIC-//Apache Software Foundation//DTD Struts Configuration 2.0//ENhttp://struts.apache.org/dtds/struts-2.0.dtdstrutsconstant namestruts.devMode valuetrue /package namelogin extendsstruts-default namespace/loginaction namelogin* classcom.bjsxt.struts2.user.action.LoginAction{1}result/user_login_success.jsp/result/action/package
/struts LocationAction1.java
这是依赖structs容器来操作session的 import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction1 extends ActionSupport {private Map request;private Map session;private Map application;public LoginAction1() {request (Map)ActionContext.getContext().get(request);session ActionContext.getContext().getSession();application ActionContext.getContext().getApplication();}public String execute() {request.put(r1, r1);session.put(s1, s1);application.put(a1, a1);return SUCCESS; }
} LoginAction2.java
这个是通过依赖注入来实现操作session等属性
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {private MapString, Object request;private MapString, Object session;private MapString, Object application;//DI dependency injection//IoC inverse of controlpublic String execute() {request.put(r1, r1);session.put(s1, s1);application.put(a1, a1);return SUCCESS; }Overridepublic void setRequest(MapString, Object request) {this.request request;}Overridepublic void setSession(MapString, Object session) {this.session session;}Overridepublic void setApplication(MapString, Object application) {this.application application;}} LoginAction3.java
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction3 extends ActionSupport {private HttpServletRequest request;private HttpSession session;private ServletContext application;public LoginAction3() {request ServletActionContext.getRequest();session request.getSession();application session.getServletContext();}public String execute() {request.setAttribute(r1, r1);session.setAttribute(s1, s1);application.setAttribute(a1, a1);return SUCCESS; }} LoginAction4.java
package com.bjsxt.struts2.user.action;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction4 extends ActionSupport implements ServletRequestAware {private HttpServletRequest request;private HttpSession session;private ServletContext application;public String execute() {request.setAttribute(r1, r1);session.setAttribute(s1, s1);application.setAttribute(a1, a1);return SUCCESS; }Overridepublic void setServletRequest(HttpServletRequest request) {this.request request;this.session request.getSession();this.application session.getServletContext();}} 项目结构如图所示