·struts2是什么?
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
·struts2组成
从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:
·操作(Actions)
·拦截器(Interceptors)
·值栈(Value Stack)/OGNL
·结果(Result)/结果类型
·视图技术
请求生命周期:
通过上述的描述,我们可以依照下面几点解释在Struts2 中用户的请求生命周期:
用户发送一个资源需求的请求到服务器(例如:页面)。
核心控制器查看请求后确定适当的动作。
使用验证、文件上传等配置拦截器功能。
执行选择的动作来完成请求的操作。
另外,如果需要的话,配置的拦截器可做任何后期处理。
最后,由视图显示结果并返回给用户。
·struts2怎么用?
当你在Struts2 的web应用程序里点击一个超链接或提交一个HTML表单时,会由控制器收集输入并发送一个叫Actions的Java类。Action被执行后,Result会选择一个资源给予响应。这个资源通常是一个JSP,也可以是一个PDF文件,一个Excel表格,或者是一个Java小程序窗口。
我们需要为每个Struts2 项目构建以下四个组件:
序号 名称及描述
1 Action(操作)创建一个动作类,包含完整的业务逻辑并控制用户、模型以及视图间的交互。
2 Interceptors(拦截器)这是控制器的一部分,可依据需求创建拦截器,或使用现有的拦截器。
3 View(视图)创建一个JSP与用户进行交互,获取输入并呈现最终信息。
4 Configuration Files(配置文件)创建配置文件来连接动作、视图以及控制器,这些文件分别是struts.xml、web.xml以及(//struts.properties)。
1.lib
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
javassist-3.20.0.GA.jar
ognl-3.1.12.jar
struts2-core-x.y.z.jar
2.classes.struts2.xml
3web.xml
4.Action.java
<%@ taglib prefix="s" uri="/struts-tags" %>莫名奇妙报错
解决方案
在/struts-tags的/后面任意初加个空格再删除空格
继Android版本后的又一zz问题
项目一HelloWorldStruts2
在文本框中输入文字后,点击按钮跳转问候界面
struts.xml
/HelloWorld.jsp
web.xml
HelloWorldStruts2
index.jsp
StrutsFilter
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
StrutsFilter
/*
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
Hello World
Hello World From Struts2
HelloWorld.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
Hello World
Hello World,
HelloWorldAction.java
package cn.w3cschool.struts2;
public class HelloWorldAction{
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
项目二:简单登陆跳转
struts.xml
/success.jsp
/fail.jsp
web.xml
Web2
/index.jsp
StrutsFilter
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
StrutsFilter
/*
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
Insert title here
<%=path %>
<%=basePath %>
loginAction.java
public class loginAction {
private String username;
private String password;
public String execute()throws Exception{
if(username.equals("admin") && password.equals("123")){
return "success";
}else{
return "fail";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}