一、 取得session 3种方法
1、context.getSession() -->>Map对象

2、HttpServletRequest request =
(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);  
再通过request 对象取得HttpSession

3、实现SessionAware接口,让strtus自动注入session实例给我们。 

二、
1.创建新项目,基本和Struts的学习-属性驱动和模型驱动一样,主要修改两个文件的代码
2.修改struts.xml

2.sesstion方法,编写UserAction.java

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么?
return this.SUCCESS;
}else {
return this.ERROR;
}
}
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

方法1:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.struts2.interceptor.SessionAware; import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

方法2:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.net.httpserver.HttpServer;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.SessionAware; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? /* //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user);*/ //第2种方法
//对javaweb 产生强耦合
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);//这里的错误要导入
HttpSession session = request.getSession();
session.setAttribute("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
}
}

添加之后要选上

方法3:

package com.nf.action;

import com.nf.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.net.httpserver.HttpServer;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.interceptor.SessionAware; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map; public class UserAction extends ActionSupport implements ModelDriven<User>,SessionAware{
//定义为null,不要管它怎么来
private Map<String , Object> session = null; private User user = new User(); //登录用的
public String login(){
System.out.println("用户名:"+user.getUserName());
if ("ad".equals(user.getUserName())&&"123".equals(user.getUserPassword())){
//登陆成功后,干什么? /* //第一种方法:通过context获得Map对象
//主动获得实例
ActionContext context = ActionContext.getContext();
Map<String , Object> session = context.getSession();
session.put("user",user);*/ /*//第2种方法
//对javaweb 产生强耦合
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)context.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession();
session.setAttribute("user",user);*/ //第3种方法,实现SessionAware直接注入实例
System.out.println("session:" +session);
session.put("user",user); return this.SUCCESS;
}else {
return this.ERROR;
} }
//跳转到登陆页面的方法
public String loginView(){ return "loginViewSuccess";
} //不需要手动调用
public User getModel() {
//告诉struts,你帮我对user进行赋值
System.out.println("struts 调用我们的getModel,获得user的实例");
return this.user;
} //用于被框架注入实例用的,不需要手动调用//这里为方法SessionAware可以用快捷键ALT+ENTER
  public void setSession(Map <String, Object> map) { session = map; } }

Struts2的学习-通配符和session对象的更多相关文章

  1. [原创]java WEB学习笔记94:Hibernate学习之路---session 的管理,Session 对象的生命周期与本地线程绑定

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. struts2获得request和session对象

    在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session都被隐藏了 struts2提供两种方式访问ses ...

  4. 重温Servlet学习笔记--session对象

    session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...

  5. hibernate学习笔记(3)hibernate常用配置以及session对象

    更改hibernate.cfg.xml的内容,常用配置有: <!--  把hibernate运行时的SQL语句显示到控制台  --> <property name="sho ...

  6. 尚硅谷STRUTS2视频学习笔记

    上一个月一直在学习STRUTS2,学习的是尚硅谷佟刚老师的视频,因为很喜欢佟刚老师的声音,而且他讲的很细,笔记做的也多,基本上是照着他的视频完整的敲了一遍代码,下面就把学习到的知识梳理一遍,最后把项目 ...

  7. Java之struts2框架学习

    Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...

  8. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  9. java struts2入门学习--OGNL语言基本用法

    一.知识点学习 1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack; 1)requ ...

随机推荐

  1. [水题AC乐] - 贪心

    HDU - 1009 https://paste.ubuntu.com/p/rgSYpSKkwW/ POJ - 1017 麻烦的模拟 贪心 题意就是用尽量少的66h箱子装nnh的物品,贪心策略很明显, ...

  2. PHP二次开发

    一.CMS类 如:phpcms.dedecms.empirecms.wordprss drupal joomla 二.shop类 如:ecshop eschopx  shopnc emall  mag ...

  3. HTML5必须知道的那些事

    [转自] http://www.cnblogs.com/hamy/archive/2012/02/21/2362110.html 再普及一次HTML5基础,HTML5必须知道的那些事,HTML5扫盲. ...

  4. DFS/BFS视频讲解

    视频链接:https://www.bilibili.com/video/av12019553?share_medium=android&share_source=qq&bbid=XZ7 ...

  5. aoj0558

    一.题意: 在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只 ...

  6. 如何在新导入的python项目中一次性生成依赖的第三方库

    requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...

  7. PIE SDK矢量自定义渲染

    1. 功能简介 PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染.分级渲染.唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求. 当面对复杂的业务,当前渲染方案无法满足用户 ...

  8. IOS下去掉input submit圆角和

    在iOS系统下input submit会有圆角,如果添加有背景色,背景色出错,在安卓系统是没有这些问题,可以在input样式加上这段样式 input{ -webkit-appearance: none ...

  9. spring框架中由FactoryBean获取JedisCluster实例

    spring配置文件: <bean id="jedisCluster" class="com.pingan.ela.structure.ex.JedisCluste ...

  10. C语言中的输入方式

    在c语言中,有gets().scanf().getchar()等输入方式,但是不同的方式处理的方式不同. scanf()读取时遇见tab.space.enter时会结束读取,不会舍弃最后的回车符(即回 ...