一、 取得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. ZOJ - 2401 水DP

    最近会多做点巩固基础的题目 #include<iostream> #include<algorithm> #include<cstdio> #include< ...

  2. P1077

    f[i][j]:i种花放j盆的方案数 #include<bits/stdc++.h> using namespace std; const int maxn = 3e2+11; const ...

  3. 螺旋队列(p98)

    先判断这个坐标代表的数位于哪一层,然后依据该层最大的数去计算这个坐标所代表的数. #include"iostream" #include"stdio.h" #i ...

  4. 可编辑的el-table表格,结合input输入,upload文件上传的表格

    最近整理了一下,table表格的编辑状态,把一般表格里需要输入的类型都放进来了,实现的功能如图     这里面的input输入框没什么好说的,绑定对应的值就可以,要注意的是组件上传的upload,这个 ...

  5. ESC/POS 控制指令

    ESC/POS  控制指令 HT 横向跳格 [名称] Horizontal tab [格式] ASCII HT Hex 09 Decimal 9 [描述] 将当前位置移动到下一个跳格位置. [注释] ...

  6. BaaS_后端即服务 RESTful

    码云coding API https://open.coding.net/ Swagger 官网用VPN能流畅打开,但它自己的基于web的编辑器不行 用来设计RESTful API LeanCloud ...

  7. js动态给textarea赋值

    document.getElementById("new_analysed_news").value=datas.weatherContent;

  8. Thinkphp基于规则的Auth权限认证类

      PS:onethink是基于该权限认证类实现,Auth类作为官方类库,在Library\Think里面. 其实Auth类也是基于角色访问控制RBAC扩展的,具体到节点的权限校验方式还是需要根据业务 ...

  9. 路由器中带宽设置(Bandwidth) 20MHZ/40MHZ

    原文是英文的,在这里:http://routerguide.net/setting-up-20-mhz-or-40-mhz-bandwidth-how-to-improve-wifi-network- ...

  10. 使用JavaFX打开fxml,找不到打开的图形界面

    解决方案: 将 HKEY_CURRENT_USER\Software\JavaSoft\Prefs\com\oracle\javafx\scenebuilder\app\preferences\/S/ ...