pom.xml
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--获取ServletAPI-->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.4.1</version>
</dependency>
</dependencies>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--解决编码的过滤器--> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>
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> <package name="default" namespace="/" extends="struts-default"> <action name="userAction" class="cn.happy.action.UserAction"> <result name="success">/success.jsp</result> <result name="input">/login.jsp</result> </action> </package> </struts>UserAction:package cn.happy.action; import cn.happy.entity.Userinfo; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.util.ServletContextAware; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Map; /** * Created by Happy on 2017-10-22. * 类 Action */ public class UserAction implements Action,ServletRequestAware,ServletContextAware { //SpringMvc Controller private HttpServletRequest servletRequest; private ServletContext servletContext; private Userinfo userinfo; public String execute() throws Exception { if ("admin".equals(userinfo.getUsername())&&"admin".equals(userinfo.getPassword())){ //登录成功获取的用户名 /* //第一种方式 ActionContext context1=ActionContext.getContext(); Map<String, Object> map = context1.getSession(); map.put("username",userinfo.getUsername());*/ //放入植栈 /*ValueStack valueStack = ActionContext.getContext().getValueStack(); valueStack.push(map);*/ /* HttpServletRequest request = ServletActionContext.getRequest(); ValueStack vs= (ValueStack)request.getAttribute("struts.valueStack"); vs.push(map);*/ //第二种方式 HttpSession session= ServletActionContext.getRequest().getSession(); session.setAttribute("username",userinfo.getUsername()); //第三种方式 /* HttpServletRequest request=ServletActionContext.getRequest(); request.getSession().setAttribute("username",userinfo.getUsername());*/ //第四种方式 /* ServletContext context=ServletActionContext.getServletContext(); context.setAttribute("username",userinfo.getUsername());*/ return SUCCESS; }else { return INPUT; } } public Userinfo getUserinfo() { return userinfo; } public void setUserinfo(Userinfo userinfo) { this.userinfo = userinfo; } public void setServletRequest(HttpServletRequest httpServletRequest) { this.servletRequest=httpServletRequest; } public void setServletContext(ServletContext servletContext) { this.servletContext=servletContext; } }登录成功后的页面:login.jsp:<%@ taglib prefix="s" uri="/struts-tags" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <s:form method="POST" action="userAction"> <%--性能低--%> 请输入用户名: <s:textfield name="userinfo.username"></s:textfield> <br/> <s:textfield name="userinfo.password"></s:textfield><br/> <s:submit value="登录"></s:submit> </s:form> </body> </html>success.jsp:<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Title</title> </head> <body> <s:debug/> <%--第一种方式 欢迎<s:property value="userinfo.username"/>--%> <%--第二种方式--%> <%--欢迎<s:property value="userinfo.username"/>--%> <s:property value="#session.username"></s:property> </body> </html>
action 继承 ActionSupport
public class fristAction extends ActionSupport { public String del(){ Map<String,Object> result=(Map<String,Object>)ActionContext.getContext().get("request"); result.put("username","张三"); return "del"; } public String list(){ Map<String,Object> result=(Map<String,Object>)ActionContext.getContext().get("request"); Object username=result.get("username"); System.out.println(username); result.put("username","张三"); return "list"; } }配置:<?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.devMode" value="true"/> <!--动态方法开启! value设置为true--> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!--<package name="cn.happy.day03manymethod" namespace="/" extends="struts-default"> <action name="fristAction" class="cn.happy.day03manymethod.fristAction" method="update"> <result name="update">/day-03/del.jsp</result> <!–1.动态方法开启!&nd ash;> <result name="list">/day-03/list.jsp</result> </action>--> <!--<action name="userAction" class="cn.happy.day03manymethod.fristAction" method="list"> <result name="list">/day-03/list.jsp</result> </action>--> <!-- 2.通配符 *_* 第一个* 代表Action的类名 第二个*代表Action中的方法名--> <!--{1}见第一个*对应的类替换到该处 将第一个*对应的真实内容替换到该处--> <!--<package name="cn.happy.day03manymethod" namespace="/" extends="struts-default"> <action name="*_*" class="cn.happy.day03manymethod.{1}" method="{2}"> <result name="{2}">/day-03/{2}.jsp</result> </action> </package>--> <!-- 结果类型 redirect 直接转发到页面--> <package name="cn.happy.day03manymethod" namespace="/" extends="struts-default"> <action name="fristAction" class="cn.happy.day03manymethod.fristAction" method="list" > <!--redirect--> <!-- <result name="{2}" type="redirect">/day-03/{2}.jsp</result>--> <!-- redirection 转发到Action--> <result name="{2}" type="redirectAction"> <param name="actionName">addhh</param> <param name="namespace">/</param> </result> </action> <action name="addhh" class="cn.happy.day03manymethod.fristAction" method="add" > <result name="fristAction">/day-03/add.jsp</result> </action> </package> </struts>页面同上