创建struts项目
来源:互联网 发布:恋恋软件 编辑:程序博客网 时间:2024/06/06 18:48
1:搭建Struts工程的步骤
A:加载Struts的jar包。通过struts-blank.war包中,拷贝最基础运行的jar包。
B:在web.xml中配置Strtuts的核心控制器
<filter>
<filter-name>struts2</filter-name>
<filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
C:在src目录下,创建struts.xml框架的配置文件。
<?xmlversion="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftware Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.enable.DynamicMethodInvocation" value="false"/>
<constantname="struts.devMode" value="true" />
<package name="default" namespace="/"extends="struts-default">
</package>
</struts>
D: 创建Struts的Action类。并且添加一个名为execute(只能命名为execute)的方法。
package com.action;
public class FirstAction {
public String execute() throwsException {
return null;
}
}
E:在Struts.xml中,对Action类做路径的映射。
WEB页面访问是URL路径。
<action name="xx"class="com.action.FirstAction"></action>
对FirstAction的路径命名为xx
F:页面中访问xx的请求路径。
<a href="${pageContext.request.contextPath}/xx">访问FirstAction</a>
G:设定Action执行完成之后,返回的Result结果。
public String execute() throws Exception {
System.out.println("FirstAction中的Execute方法被执行....");
return "error";
}
<action name="xx"class="com.action.FirstAction">
<result name="succ">/test_succ.jsp</result>
<result name="error">/test_error.jsp</result>
</action>
根据execute方法中返回的字符串,对应Action配置中的result的名称。
如果匹配的话,那么就会跳转到相应的jsp页面或者freemarker页面。
2:Struts 2框架的大致处理流程如下:
A:浏览器发送请求,例如请求/xx、等。
B: Control中的核心控制器StrutsPrepareAndExecuteFilter根据请求路径(/xx与struts.xml中配置的action的name
进行匹配),调用相应的业务逻辑控制器(Action)。
C:Struts2的拦截器栈自动对请求应用通用功能,如数据校验和文件上传等功能。
D:回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。
既可以是将数据保存到数据库,也可以从数据库中检索信息。
实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。
E:execute()方法将调用业务逻辑组件(Model)得到的数据返还并更新视图层(View),
此时支持的视图技术非常多,既支持JSP,也支持FreeMarker等模板技术。
3:struts工程中可以运行Servlet
3.1:Struts核心控制器,默认拦截/*的请求。(拦截的是无后缀名或者后缀名为action的请求。)
把servlet的后缀名,进行变更。
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/FirstServlet.svt</url-pattern>
</servlet-mapping>
那么访问路径:
<a href="${pageContext.request.contextPath}/servlet/FirstServlet.svt">2:运行FirstServlet</a>
3.2:重写Struts的过滤器,如果是SErvlet的请求路径的话,则不进行处理。
public class StrutsFilter extendsStrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throwsIOException, ServletException {
HttpServletRequest request =(HttpServletRequest) req;
String requestURI =request.getRequestURI();
if (requestURI.indexOf("/servlet") != -1) {
/**
* 表示访问的路径是一个Servlet
*/
chain.doFilter(req, res);
} else {
/**
* 调用Struts的核心控制器继续处理
*/
super.doFilter(req, res, chain);
}
}
}
web.xml中重新配置。
<filter>
<filter-name>struts2</filter-name>
<filter-class>com.filter.StrutsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4:struts核心配置文件(struts.xml)
4.1:constrant的配置,常量可以配置在以下的文件列表中。最后面的配置会覆盖前面的配置。
1.struts-default.xml \WEB-INF\lib\struts2-core-2.3.28.jar\struts-default.xml。一般不进行配置。
3.struts.xml \src目录下
<constantname="struts.devMode" value="true" />
4.struts.properties \src目录下,手工进行创建
struts.devMode = false
5.web.xml \WEB-INF目录下。
<filter>
<filter-name>struts2</filter-name>
<filter-class>com.filter.StrutsFilter</filter-class>
<init-param>
<param-name>struts.devMode</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>struts.enable.DynamicMethodInvocation</param-name>
<param-value>true</param-value>
</init-param>
</filter>
4.2:常用的常量配置。
Struts中所有的常量定义:\struts2-core-2.3.28.jar\org.apache.struts2\default.properties
struts.i18n.encoding=UTF-8 //设定编码
struts.multipart.maxSize=2097152 //设定上传文件的大小
struts.action.extension=action,, //设定Struts的后缀名
struts.enable.DynamicMethodInvocation =false //是否开启Struts的动态方法调用
struts.devMode = false //是否处于开发模式
struts.ui.theme=xhtml //设定UI控件的主题
struts.ognl.allowStaticMethodAccess=false //是否允许ONGL表达式调用静态方法。
4.3:include配置。
包含其他的配置文件,用于团队项目。
规则:不同的配置文件中,package与namespace的名称不能重复。
<package name="default" namespace="/"extends="struts-default">
<include file="struts-user.xml"></include>
4.4:package配置
<package
name="" package的命名,不能重复。用于package之间的继承。
namespace="" action访问的命名空间。
extends="" 继承哪一个package,默认继承struts-default
abstract="true|false" true:表示是一个抽象包。抽象包中不能定义action
></package>
完整的Action访问路径:
命名空间 + action的名称
路径中的访问命名空间>=struts.xml中定义的命名空间。
/aa/bb/cc/dd/ee/XXXAction /aa/bb
4.5:action的配置。
<action name="" action的名称
class="" action类的路径
method="" 默认执行execute方法,
但是可以通过method属性来指定调用哪一个方法。
></action>
4.6:result的配置。
<result
name="" result的名称
type=""> result类型。
请求转发到Action : chain"
请求转发到页面 dispatcher"
重定向到页面: redirect"
重定向到Action redirectAction"
返回的result是一个流类型:用于文件下载:stream"
</result>
<result name="forward_jsp"type="dispatcher">/forward_jsp.jsp</result>
<resultname="redirect_jsp" type="redirect">/redirect_jsp.jsp</result>
<resultname="forward_action" type="chain">
<param name="namespace">/</param>
<paramname="actionName">xx</param>
<paramname="methodName">execute</param>
</result>
<result name="redirect_action"type="redirectAction">
<param name="namespace">/</param>
<paramname="actionName">xx</param>
<paramname="methodName">execute</param>
</result>
- maven创建struts项目
- Eclipse创建Struts项目
- 创建struts项目
- Struts--创建Struts项目四部曲
- struts项目创建过程说明
- struts第一步--HelloWorld项目创建
- eclipse maven 创建struts项目
- 使用Eclipse创建struts项目
- 使用IDEA创建Struts项目
- 创建简单的struts项目
- idea创建struts项目示例
- 手工创建Struts项目的简单例子
- Maven2创建Struts 2.2.1项目
- ideal创建Struts 2.x项目
- Struts2——1.创建Struts项目
- Struts 2.5.2 创建一个简单的项目--登录
- struts创建步骤
- MyEclipse创建struts.xml
- Qt学习之路(31): 一个简易画板的实现(QWidget)
- Java中System.loadLibrary() 的执行过程
- Java synchronized 关键字的讲解
- 【UGUI】UGUI的事件监听
- 算法
- 创建struts项目
- Java开发中的23种设计模式详解(二)
- join()一个实例来说明
- AndroidStudio混淆
- CentOS下DB2数据库安装过程详解
- css3 text-shadow 为网页字体添加阴影
- Sphinx 安装,配置,使用,分页
- Android L SurfaceFlinger dump信息全解(一)
- 批量修改|导入Unity3d资源属性,帮助那些遗忘勾、选项的美术同学们 (其实我做美术的时候也一样有健忘症)