Struts2综述
来源:互联网 发布:淘宝能卖中药吗 编辑:程序博客网 时间:2024/06/03 19:15
1、MVC
1.1 Model1 和Model2
Model 1 :整个web应用几乎全部在jsp页面上处理,页面身兼view和controller的角色。代码重用度低,扩展和维护难度较大,适用于小型的web站点。
Model2:是基于MVC的设计模式。Servlet作为前端控制器,负责接收客户端发送的请求。Servlet包含控制逻辑和简单的前端处理,然后调用后端的javaBean来完成实际的逻辑处理,最后转发到相应的jsp页面。
1.2 MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
MVC特点:
(1)多个视图可以对应一个模型。
(2)模型返回的数据与现实逻辑分离。
2、在Eclipse中使用Struts2
(1)代码结构
LoginAtion.java
package org.crazyit.app.action;import com.opensymphony.xwork2.*;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.*;import javax.servlet.http.*;import java.util.Map;public class LoginAction implements Action // ,ServletResponseAware{private String username;private String password;//private HttpServletResponse response;// username的setter和getter方法public void setUsername(String username){this.username = username;}public String getUsername(){return this.username;}// password的setter和getter方法public void setPassword(String password){this.password = password;}public String getPassword(){return this.password;}public String execute() throws Exception{ActionContext ctx = ActionContext.getContext();// 通过ActionContext访问application范围的属性值Integer counter = (Integer)ctx.getApplication().get("counter");if (counter == null){counter = 1;}else{counter = counter + 1;}// 通过ActionContext设置application范围的属性ctx.getApplication().put("counter" , counter);// 通过ActionContext设置session范围的属性ctx.getSession().put("user" , getUsername());if (getUsername().equals("hhp")&& getPassword().equals("hhp") ){// 通过ActionContext设置request范围的属性ctx.put("tip" , "服务器提示:您已经成功的登录");Cookie c = new Cookie("user", getUsername());c.setMaxAge(60*60);//response.addCookie(c);ServletActionContext.getResponse().addCookie(c);return SUCCESS;}// 通过ActionContext设置request范围的属性ctx.put("tip" , "服务器提示:登录失败");return ERROR;}}
LoginForm.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>登录页面</title></head><body><form action="login.action" method="post"><table align="center"><caption><h3>用户登录</h3></caption><tr><td>用户名:<input type="text" name="username"/></td></tr><tr><td>密 码:<input type="text" name="password"/></td></tr><tr align="center"><td><input type="submit" value="登录"/><input type="reset" value="重填" /></td></tr></table></form></body></html>
Struts.xml
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="conststruts.devMode" value="true"/><!-- Struts2的所有Action都需位于package下 --><package name="lee" extends="struts-default"><!-- 定义名为login的Action,其实现类为LoginAction类 --><action name="login" class="org.crazyit.app.action.LoginAction"><!-- 处理结果返回error,对应/WEB-INF/content/error.jsp视图资源 --><result name="error">/WEB-INF/content/error.jsp</result><!-- 处理结果返回success,对应/WEB-INF/content/welcome.jsp视图资源 --><result>/WEB-INF/content/welcome.jsp</result></action><action name="*"><!-- --><result>/WEB-INF/content/{1}.jsp </result></action></package></struts>
3、Struts2工作流程
1. 客户端发送请求的tomcat服务器。服务器接受,将HttpServletRequest传进来。
2. 请求经过一系列过滤器(如:ActionContextCleanUp、SimeMesh等)
3. FilterDispatcher被调用。FilterDispatcher调用ActionMapper来决定这个请求是否要调用某个Action
4. ActionMapper决定调用某个ActionFilterDispatcher把请求交给ActionProxy
5. ActionProxy通过ConfigurationManager查看struts.xml,从而找到相应的Action类
6. ActionProxy创建一个ActionInvocation对象
7. ActionInvocation对象回调Action的execute方法
8. Action执行完毕后,ActionInvocation根据返回的字符串,找到对应的result。然后将Result内容通过HttpServletResponse返回给服务器。
- Struts2综述
- 综述
- IDS综述
- rootkit 综述
- JUnit综述
- 近况综述
- SHARK综述
- [图论]综述
- 竞争力综述
- OSGi综述
- 模式识别综述
- BPEL综述
- UML综述
- CMM综述
- 以太网综述
- 时态综述
- Moblin综述
- AltiVec综述
- 细说算法-------快速排序QuickSort
- [SDOI2011] [BZOJ2243] 染色 - 树链剖分
- 蓝桥杯广东赛区省赛之感想
- 【牛腩小试】——IIS配置
- Redis_php 学习
- Struts2综述
- 第二周项目四-用循环求(2)
- HDOJ-小希的迷宫 水并查集
- 4296: [PA2015]Mistrzostwa 图的遍历
- POJ 3253 Fence Repair
- 【BZOJ1014】[JSOI2008]火星人prefix【Splay】【Hash】
- 欢迎使用CSDN-markdown编辑器
- [搜索 剪枝] BZOJ3085 反质数加强版SAPGAP
- JavaScript表单编程