Struts2中访问Servlet中的API(ActionContext,ServletActionContext)两种方式

来源:互联网 发布:阿里云汽车荣威rx5 编辑:程序博客网 时间:2024/06/06 18:34

1:login.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>请登录:</h3>
<form action="islogin2" method="post">
用户名:<input type="text" value="zhangsan" name="loginname"/><br/>
密码:<input type="password" value="123" name="loginpwd"/><br/>
<input type="submit" value="登陆"/><br/>
</form>
</body>
</html>



2:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!-- 配置 Struts2 的 Filter -->
<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<welcome-file-list>
<welcome-file>/day01/welcome.jsp</welcome-file>
</welcome-file-list>
</web-app>


3:struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
  <!-- 一旦Struts.xml文件修改后就自动重新加载 -->
  <constant name="struts.configuration.xml.reload" value="true"></constant>
  <!--默认视图  -->
  <constant name="struts.ui.theme" value="simple"></constant>
    <!-- 编码格式 -->
      <constant name="struts.i18n.encoding" value="UTF-8"/>
      <!-- 配置 Struts 可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do,"></constant>
  <!-- 允许ognl静态访问资源 -->
  <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
   <!-- 设置是否支持动态方法调用 -->
  <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
  <package name="hellodemo" extends="struts-default" namespace="/">
  <default-action-ref name="welcome"></default-action-ref>
  <!-- 配置 全局结果集-->
  <global-results>
  <result name="input">/day01/login.jsp</result>
  <result name="error">/day01/error.jsp</result>
  </global-results>
  <!-- 配置全局异常 -->
  <global-exception-mappings>
  <exception-mapping result="error" exception="java.lang.NULLPointerException"></exception-mapping>
  </global-exception-mappings>
  <action name="islogin2" class="cn.itcast.action.LoginAction" method="checklogin">
  <result name="suc">/day02/suc.jsp</result>
  <result name="input">/day02/index_login.jsp</result>
  </action> 
  <action name="hello" class="cn.itcast.action.HelloAction" method="execute">
  <result name="success">/hello.jsp</result>
  </action> 
  <action name="upload" class="cn.itcast.action.UploadFileAction">
       <result name="success">/success.jsp</result>
       <result name="error">/error.jsp</result>
   </action>
    <action name="islogin" class="cn.itcast.action.UserAction" method="islogin">
  <!-- action中的方法执行完后不直接返回jsp页面,而是执行另一个action中的方法 -->
  <result name="success" type="chain">findsomeinfo</result>
  </action>
  <action name="isreg" class="cn.itcast.action.UserAction" method="isreg">
  <result name="success">/day01/regsuc.jsp</result>
  </action>
  <action name="findsomeinfo" class="cn.itcast.action.UserAction" method="findinfo">
  <result name="success">/day01/success.jsp</result>
  </action> 
  <action name="welcome">
  <result>/day01/welcome.jsp</result>
  </action>
  </package> 
</struts>


4:LoginAction

package cn.itcast.action;


import java.util.Map;


import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


import org.apache.struts2.ServletActionContext;


import com.opensymphony.xwork2.ActionContext;
//访问Servlet中的request,session,application
public class LoginAction {
private String loginname;
private String loginpwd;
public String checklogin(){
if("zhangsan".equals(loginname)&&"123".equals(loginpwd)){
//方式一:通过ActionContext
ActionContext ac=ActionContext.getContext();
Map<String, String> request=(Map<String, String>) ac.get("request");
//向request中保存数据
request.put("requestMsg", "request中保存的信息");
Map<String, Object> session=ac.getSession();
//向sesison中保存数据
session.put("sessionMsg", "session中保存的信息");
Map<String, Object> application=ac.getApplication();
//向application中保存数据
application.put("applicationMsg", "application中保存的信息");
//方式二:通过ServletActionContext
HttpServletRequest request2=ServletActionContext.getRequest();
request2.setAttribute("requestMsg1", "request中保存的信息1");
HttpSession session2=ServletActionContext.getRequest().getSession();
session2.setAttribute("sessionMsg1", "session中保存的信息1");
ServletContext application2=ServletActionContext.getServletContext();
application2.setAttribute("applicationMsg1", "application中保存的信息1");
return "suc";
}else
return "input";
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getLoginpwd() {
return loginpwd;
}
public void setLoginpwd(String loginpwd) {
this.loginpwd = loginpwd;
}
}


5:suc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>登陆成功</h2>
requestMsg:&nbsp;&nbsp;${requestMsg}<br/>
sessionMsg:&nbsp;&nbsp;${sessionMsg}<br/>
applicationMsg:&nbsp;&nbsp;${applicationMsg}<br/><br/>
requestMsg1:&nbsp;&nbsp;${requestMsg1}<br/>
sessionMsg1:&nbsp;&nbsp;${sessionMsg1}<br/>
applicationMsg1:&nbsp;&nbsp;${applicationMsg1}<br/>
</body>
</html>

阅读全文
0 0
原创粉丝点击