牛骨文教育服务平台(让学习变的简单)
博文笔记

Struts2获取servlet的内置对象和struts2的通配符

创建时间:2017-10-18 投稿人: 浏览次数:521
package com.lanou.struts2.controller;


import java.util.HashMap;
import java.util.Map;


import javax.servlet.ServletContext;


import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpSession;


import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;


import com.lanou.struts2.bean.User;
import com.opensymphony.xwork2.ActionContext;
public class UserAction  implements SessionAware{ 
//设置访问域public可以不用get/set方法
// User result=new User();

Map<String, Object> result=new HashMap<>();
String username;
/**
 * 建议使用实现了接口的
 */
Map<String, Object> session;//通过实现接口直接获取session,需要get、set方法


 public Map<String, Object> getSession() {
return session;
}


public void setSession(Map<String, Object> session) {
this.session = session;
}


User user;//域驱动
 
public User getUser() {
return user;
}


public void setUser(User user) {
this.user = user;
}


public String getUsername() {
return username;
}


public void setUsername(String username) {
this.username = username;
}


public String test(){
result.put("status", 1);
result.put("data", new User());
System.out.println(username);
return "foo";
}


public String execute(){
System.out.println("execute方法执行了");
return "error";
}
public String servlrtTest(){//解耦
ActionContext  context=ActionContext.getContext();
//Action来了,filter创建对象,不同于servlet,多个action
Map<String, Object>  request=(Map<String, Object>) context.get("request");

    request.put("item", "hahaha");
    Map<String, Object> session=context.getSession();
    session.put("item", "FUXINLONG");
    Map<String, Object> application=context.getApplication();
    application.put("item", "cuidengyi");
   Map<String, Object>  param=   context.getParameters();
   String[] str=(String[]) param.get("item");
System.out.println(param.get("item"));
 
return "error";
}
public String servletTry(){//耦合
HttpServletRequest req=ServletActionContext.getRequest();
  req.setAttribute("item", "zz");
  ServletContext app=ServletActionContext.getServletContext();
  app.setAttribute("item", "jj");
  HttpSession session=req.getSession();
  session.setAttribute("item", "rr");
return "error";
}


public Map<String, Object> getResult() {
return result;
}


public void setResult(Map<String, Object> result) {
this.result = result;
}


}

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.enable.DynamicMethodInvocation" value="false" />

    <!--  开发者模式,用于抛异常,可以直接抛到前端页面  -->

    <constant name="struts.devMode" value="true" />

     <!--name就是给包起的名字,管理在包下的所有的action ,继承一个包,命名空间-->

     <!-- 实现json继承json-default -->

    <package name="default" namespace="/" extends="json-default">


      <!-- 关联action类和filter -->

      <!-- name就是访问的接口名name是起的名字 ,class关联类,method指带执行的方法-->  

      <!--     <action name="*_*"  class="com.lanou.struts2.controller.{1}Action"  method="{2}">        -->

       <action name="user_*"  class="com.lanou.struts2.controller.UserAction"  method="{1}">

       <!-- execute方法返回的String ,可以放置多个result-->

       <!--chain ,redirect 跳转页面或action 重定向到url,可以跳转到其他包下,redirect-action同一命名空间下  -->

       <!--type的plainText展现源码,可做介绍,  -->

       <!--type等于json  -->

        <result name="foo"  type="json">

        <!--执行成功跳转页面  -->

        <param name="root">

         result

        </param>

              

       </result>

       <result name="error"  >

       /test.jsp   <!-- /{2}.jsp -->

       </result>

       </action>

    </package>


    <include file="example.xml"/>


   


</struts>


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。