Struts2 MVC框架,
Struts2-Core Struts2核心包
Xwork-core Xwork 核心,构建基础
JavaSist-GA 底层字节码生成
File-upload 文件上传
--------------------
commons-io IO操作
commons-lang 数据类型的处理工具类
freemarker 模板引擎
ognl 表达式
1.pom.xml
Struts2-Core Struts2核心包
Xwork-core Xwork 核心,构建基础
JavaSist-GA 底层字节码生成
File-upload 文件上传
--------------------
commons-io IO操作
commons-lang 数据类型的处理工具类
freemarker 模板引擎
ognl 表达式
1.pom.xml
<!--获取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>
2.配置web.xml
配置的是什么?
解析:过滤器 核心过滤器 StrutsPrepareAndExcuteFilter
3.view视图
<s:form name="form1" method="post" action="login">
请输入用户名: <s:textfield name="username"></s:textfield> <br/>
<s:textfield name="password"></s:textfield><br/>
<s:submit value="登陆"></s:submit>
</s:form>
4.定制Action
public class UserAction implements Action{
//SUCCESS NONE INPUT LOGIN ERROR
//SpringMvc Controller
public String execute() throws Exception {
return SUCCESS;
}
}
5.struts.xml
根节点Struts节点
<package name="default" namespace="/" extends="struts-default">
<action name="userAction" class="cn.happy.action.UserAction">
<result name="success">/success.jsp</result>
</action>
</package>
6.部署运行
3.自动装配
Struts2 自动装配 AutoAWired(PageUI ----->控制器属性)
拦截器
领域模型的自动装配
4.ServletAPI 去获取常见对象Session ,request
与Servlet API解耦的访问方式
方案一: 对Servlet API进行封装 ,借助ActionContext
--->01.使用ActionContext类获取ServletAPI对象对应的Map对象
方案二:向Action中注入ServletAPI对象对应的Map对象
--->02.Struts2向Action注入ServletAPI对象对应的Map对象
与Servlet API耦合的访问方式
方式一:通过ActionContext的子类ServletActionContext实现
方式二:向Action实例注入Servlet API对象
入门案例
pom.xml
<!--获取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>
web.xml<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>
HellowordAction类
public class HelloWordAction implements Action { //请输入用户的姓名 private String name=""; //向用户现实的信息 private String message=""; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } /** * excute方法,当struts2处理用户请求时,在默认配置下调用的方法 * @return * @throws Exception */ public String execute() throws Exception { //根据用户输入的姓名,进行“Hello,xxx"的封装 this.setMessage("Hello,"+this.getName()+"!"); //处理完毕,返回”helloword“ return "ss"; } }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> <!--创建一个default包,继承自Struts2的struts-default包--> <package name="default" namespace="/" extends="struts-default"> <!--接受处理用户的/helloword.action请求,并根据返回结果,完成跳转--> <action name="helloword" class="cn.struts.one.HelloWordAction"> <!--结果为”helloword时,跳转至helloword.jsp页面--> <result name="ss">helloword.jsp</result> </action> </package> </struts>运行效果图(1)
(2)
上课案例:UserINfo类public class UserINfo { private String username; private String password;UserAction类public class UsesrAction implements Action { private UserINfo userINfo; public UserINfo getUserINfo() { return userINfo; } public void setUserINfo(UserINfo userINfo) { this.userINfo = userINfo; } public String execute() throws Exception { if ("admin".equals(userINfo.getUsername())&&"admin".equals(userINfo.getPassword())) { //登录成功显示用户 //第一种方式 session ActionContext context=ActionContext.getContext(); Map<String,Object> map=context.getSession(); map.put("username",userINfo.getUsername()); //第二种方式 session /* HttpSession session = ServletActionContext.getRequest().getSession(); session.setAttribute("username",userINfo.getUsername());*/ /* 放入值栈 (1)*/ ValueStack valueStack = ActionContext.getContext().getValueStack(); valueStack.push(map); /* 放入值栈 (2)*/ /* HttpServletRequest request = ServletActionContext.getRequest(); ValueStack vs= (ValueStack) request.getAttribute("struts.valueStack"); request.setAttribute("username",userINfo.getUsername()); */ /*第三种方式 request */ /* HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("username",userINfo.getUsername());*/ /*第四种方式 application */ /* ServletContext servletContext = ServletActionContext.getServletContext(); servletContext.setAttribute("username",userINfo.getUsername());*/ return SUCCESS; }else { return INPUT; } } }struts.xml
<package name="default" namespace="/" extends="struts-default"> <action name="useraction" class="cn.struts.UsesrAction"> <result name="success">/success.jsp</result> <result name="input">1.jsp</result> </action> </package>1.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <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> <s:submit value="登陆"></s:submit> </s:form> </body> </html>success.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Title</title> </head> <body> <s:debug/> <%-- 第一种方式 session <h2>欢迎</h2> <s:property value="userINfo.username"/>--%> <%--第二种方式 session <h2>欢迎</h2> <s:property value="#session.username"/>--%> <%--第三种方式 request --%> <%--<h2>欧叶</h2><s:property value="#request.username"/>--%> <%--第四种方式 application--%> <%--<h2>啦啦</h2><s:property value="#application.username"></s:property>--%> <%-- <s:property value="username"></s:property>--%> <hr/> ${username} </body> </html>