一、 取得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. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  2. 在python3.5中pip安装scrapy,遇到 error: Microsoft Visual C++ 14.0 is required

    本来在python3.5中安装scrapy一路顺畅(pip install scrapy),中间遇到一个 error: Microsoft Visual C++ 14.0 is required. x ...

  3. Oracle笔记-Multitable INSERT 的用法

    [转自]  http://blog.chinaunix.net/uid-8504518-id-3310531.html 为避免日趋衰退的记忆力,参考官方E文文档<Introduction to ...

  4. Q205 同构字符串

    给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...

  5. CSS2.1

    学而时习之,不亦说乎!                              --<论语> CSS:cascading style sheet(层叠样式表) 作用:描述页面的样式. 书 ...

  6. SQL Server Reporting Service(SSRS) 第七篇 常见错误汇总

    1. The current action cannot be completed. The user data source credentials do not meet the requirem ...

  7. PIXI AnimatedSprite 及打字爆炸动画(5)

    效果 : 消除字母 当前位置出现爆炸效果 这里使用到了AnimatedSprite 动画  Members An AnimatedSprite is a simple way to display a ...

  8. linux拓展之 用linux命令 管理windows一秒完成不可思议的操作--本节实战find 移动!!

    花里胡哨的东西太多,有时候觉得简单也好! 你学习了Linux,是不是觉得Linux很强大!命令的多样性结合性有没有把你征服? 在那个烈日炎炎的夏日,我下载了辣末多老男孩的视屏----但是突然我只想看t ...

  9. java中的各种修饰符作用范围

    访问修饰符: private 缺省 protected public 作用范围: 访问修饰符\作用范围 所在类 同一包内其他类 其他包内子类 其他包内非子类 private 可以访问 不可以 不可以 ...

  10. params传递任意参数

    namespace 传递任意参数{ class Program { static void Main(string[] args) { //可传递任意数量参数 Test(1, 2, "sas ...