标签:值栈 调度 路由 tutorials ring har public handle 阈值
在Struts2的Model-View-Controller模式实现以下五个核心组件:
动作-Actions
拦截器-Interceptors
值栈/OGNL
结果/结果类型
视图技术
Struts 2和传统的MVC框架有些不同,在该框架中的作用的模式,而不是控制器的作用略有不同,虽然有一些重叠。这是Struts的MVC模式的体系结构概述。
上图描述了Struts2的高层体系结构模型,视图和控制器。一个Struts2的调度Servlet过滤器和拦截器与控制器实现,该模型实现的动作和视图的组合的结果类型和结果。值栈和OGNL提供了共同点,其他部件之间的连接和集成。
除了从上述组分中,将有一个特定的信息,涉及到配置。为Web应用程序的配置,以及配置的行动,拦截器,结果等。
基于上述数据图,可以解释用户的请求的生命周期在Struts 2如下所示:
Hello World,
用户的请求发送到服务器,用于请求某些资源(即页面)。
该过滤器调度的要求和确定适当的动作。
配置拦截器的功能适用于如验证,文件上传等。
选择的动作执行,执行所请求的操作。
同样,配置拦截器做任何后期处理,如果需要的话。
最后的结果是由视图准备,并且将结果返回给用户。
commons-fileupload-x.y.z.jar
commons-io-x.y.z.jar
commons-lang-x.y.jar
commons-logging-x.y.z.jar
commons-logging-api-x.y.jar
freemarker-x.y.z.jar
javassist-.xy.z.GA
ognl-x.y.z.jar
struts2-core-x.y.z.jar
xwork-core.x.y.z.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.tutorialspoint.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; } } |
我们需要一个JSP提交最后的消息,这个页面会使用在Struts 2框架中预定义的动作时,这将会发生在struts.xml文件中定义的映射。
1
2
|
<%@ page contentType=text/html; charset=UTF- 8 %> <%@ taglib prefix=s uri=/struts-tags %> |
接下来创建一个主页面:
我们还需要在WebContent文件夹中创建index.jsp页面文件。该文件将作为初始动作URL,用户可以直接点击告诉Struts2框架调用的HelloWorldAction类定义的方法并渲染HelloWorld.jsp视图。
这里可能会遇到一个问题:
一、发现问题
在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没有出现所建立的工程名字。
二、验证
很明显项目并没有自动部署到Tomcat的Webapps中而是部署在了别的容器中。在内置浏览器中输入https://localhost:8080/webDemo/login.jsp可正常打开。但在外部浏览器上打开https://localhost:8080时确没有出现所期望的小猫画面。
三、原因
eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下
的.metadata.pluginsorg.eclipse.wst.server.core mp1wtpwebapps中,tmp1文件夹里面存放着该项目的信息。
四、修改
为了使项目默认部署到tomcat安装目录下的webapps中,show view—>servers—>找到需要修改的tomcat—>右击 ①停止eclipse内的Tomcat服务器(stop) ②删除该容器中部署的项目(add and remove) ③清除该容器相关数据(clean) ④打开tomcat的修改界面(open)
⑤找到servers location,选择第二个(User tomcat Installation) ⑥修改deploy path为webapps ⑦保存关闭
需要说明的是①②③必须操作,否则下面的步骤会被置灰无法操作。
还会遇到另一个错误就是在jsp的开始会有JavaWeb:报错信息The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
原来Javaweb工程类中没有添加Tomcat运行时相关类导致。 下面是具体的解决方法: 1、右击web工程-》属性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server 2、切换到Java Build Path界面中的Orader and Export,选择Tomcat。
主页面的代码如下(index.jsp):
1
2
3
4
|
<%@ page language=java contentType=text/html; charset=ISO- 8859 - 1 pageEncoding=ISO- 8859 - 1 %> <%@ taglib prefix=s uri=/struts-tags%> |
我们需要一个映射,以配合URL,HelloWorldAction类(模型),HelloWorld.jsp(视图)。映射告诉Struts 2框架的类将如何响应用户的操作(URL),这一类的方法将被执行,在该方法返回的基础上选择什么视图来显示字符串结果。
1
2
3
4
5
6
|
/Hello.jsp |
下一步是创建一个web.xml文件这是任何请求发送到Struts2的一个切入点。Struts2的应用程序的入口点,将是一个部署描述符(web.xml)中定义的过滤器。
在web.xm文件中,我们定义一个过滤器org.apache.struts2.dispatcher.FilterDispatcher. web.xml文件需要创建WEB-INF文件夹下的WebContent。 Eclipse在创建项目时已经创建了一个web.xml文件。所以,让我们只需要修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* |
您可以启用完整的日志记录功能,通过创建工作和Struts2同时创建logging.properties文件在 WEB-INF/classes 文件,在属性文件中,请注意以下两行:
1
2
3
|
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler |
下面还有几个需要注意的信息,最主要的是,出错以后要看出错信息,找到原因。现在遇到的问题归结为两个原因:
1)配置文件中的书写错误。
2)导包不全面,按照错误提示的导包就行。
标签:值栈 调度 路由 tutorials ring har public handle 阈值
原文地址:http://www.cnblogs.com/hfddz/p/7728389.html