struts2(1)----------开发一个Struts2程序

struts2应用程序的核心是:HTTP协议的用户与服务器数据的交换。

1、Http协议是一种无状态基于文本的协议

1.1)所谓无状态就是每次请求都会被当做服务器接收到的唯一的请求处理,不记录收到的多个请求之间的任何信息。它没有保存用来追踪和逻辑上连接来源于一个给定客户的多个请求记录,另外,虽然服务器有客户端的地址,但是这个地址只能返回当前请求的文档。如果一个客户端回来请求其他文档,服务器不知道这是同一个客户端的重复访问。

1.2)所谓基于文本,在一个http请求中,所有的数据都是以文本的方式表示,这样将基于文本技术与强类型的技术匹配起来,会引发大量的数据绑定工作。另外,输入请求的参数必须被迁移到java环境中,发出的响应必须将数据从java环境中带到基于文本的HTTP响应,因此这些繁琐的工作即会造成出错又浪费时间。

1.3)lava Servlet API出现缓解了一些痛苦,但是Servlet是单例的java对象,它的全部用途在于接收请求,以及在任意响应的后端处理之后返回响应。request做了封装,当Servlet接收某些请求对象后,检查其中的数据,执行适当的后台代码,之后再向客户端返回响应。

2、servlet工作流程:在部署一个web项目之前,需要按照某种标准进行打包,servlet和资源文件按照特定的目录结构被打包在一起,并且压缩为一个.war结尾的档案文件。之后再进行部署,servlet(托管生命周期的应用程序)它被部署在一个容器内,容器通过调用不同的servlet周期方法来管理它的执行,当servlet接收到某种请求时候,容器首先决定它执行那个servlet,然后执行servlet中的service()方法,并且移交给这个方法一个请求对象和一个响应对象。当某个请求到达某个端口的时候,容器通过解析请求的命名空间,来发现指向的应用程序。从URL的命名空间中,可以判断web应用程序和指向的独立的servlet。

3、什么是框架?框架是一种结构化软件,提供了该领域中常见任务的自动化实现,并提供了架构解决方法。

4、struts1主要是将MVC模式从桌面应用程序引入到web应用程序中。

5、MVC模式最大的用途是提供了重用问题的解决方案。MVC模式三个关注点:模型、视图、控制器,在struts中,他们分别通过action、result、FilterDispatcher实现。



​ (5.1)控制器--FilterDistpatcher:struts2中的FilterDispatcher扮演控制器(它是servlet中的一个过滤器),被称为前端控制器(主要任务是将请求映射到action),这意味着控制器在最前端,是请求处理过程中第一个被触发的组件,它的工作就像一个交通警察,检查每一个传入的请求,通过URL映射决定哪个struts2中的action处理请求。(这个任务完成有两种方式:配置xml方式和注解方式)

​ (5.2)模型--Action:模型像是一个包含应用程序内容的黑盒子,它是应用程序的内部状态,由数据模型和业务逻辑共同组成。struts2的Action有两个作用,首先,将业务逻辑封装到一个独立的工作单元,其次,是一个数据传输的场所。

​ (5.3)视图--结果:通常是JSP页面,作用:将应用程序的状态变为一种用户可以与之交互的可视化的表示。

6、struts2的工作原理


struts2的架构组件主要包括拦截器、OGNL和ValueStack

​ (6.1)拦截器:拦截器无论在action执行之前还是之后都会被调用,并且需要指出的是它们在结果执行完毕后才被触发。有些拦截器仅在action执行之前工作,有些则在action执行之后才工作。拦截器允许常见的、横切的任务在简洁、可重用的组件中定义,从而使action中代码分离。实例:日志(高层系统管理的范畴)应该在每个action执行时被记录、数据验证、类型转换、文件上传等。

(6.2)OGNL和ValueStack:ValueStack中保管了与请求处理相关的所有数据的一个存储区域。OGNL:用来引用、操作ValueStack中数据的强大的表达式语言。


7、开发第一个Struts2程序


    7.1)新建一个web project工程,然后进行导入jar包(放在webroot web-inf lib下)



7.2)然后在配置web.xml

7.3)然后在src下面建立struts.xml文件(myeclipse 右击src---->new --->XML(Basic...)-->struts.xml--->create XML....DTD file---->select Xml Catalog....------>key 为 ......2.1.7//EN------>finish)eclipse中没有这个功能配置:

7.4)建立com.action包,建立Action类

        1)可以实现Action接口,并实现execute()方法        

        2)可以继承ActionSupport类。

       3)普通的pojo类

8、一个完整的login页面action

UserAction.java(继承ActionSupport)

public class UserAction extends ActionSupport{
	
	public String login(){
		User user = new User("sqc","123");
		//如果登陆成功,则将user放入session中
		ActionContext.getContext().getValueStack().setValue("#session.user", user);
		
		return Action.SUCCESS;}
	} 

struts.xml配置

<package extends="struts-default" name="user" namespace="/user">
	<action name="login" class="com.baizhi.action.UserAction" method="login">
		<result name="success">/index.jsp</result>
	</action>
</package>

部署启动服务器访问  http://localhost:8888/项目名/user/login









猜你喜欢

转载自blog.csdn.net/qq_36115651/article/details/80170532