002--struts2入门
2015-07-30 10:43
543 查看
struts2入门
1、MVC设计思想
1.1、什么是MVC是一种设计思想,非常优秀的设计思想.根据职责不同将应用程序的组件分成三部分。
Model模型:负责业务数据和业务处理.
View视图:负责显示和接收用户输入.
Controller控制器:协调模型和视图
1.2、MVC在JavaWeb中的体现
Model:DAO,Entity,Util
View:JSP
Controller:Servlet
1.3 、MVC工作的基本流程
a.客户端发请求,请求交给前端控制器处理
b.前端控制器维护一个XML配置文件
(XML定义了请求和Action之间的对应关系)
c.前端控制根据请求调用相应的Action组件,执行请求处理
d.Action处理完毕,可以将处理结果存放到Request
e.控制器调用相应的视图JSP,进行响应处理
1.4、mvc的作用
1.各施其职,互不干涉
在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
2.有利于开发中的分工
在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控层。
3.有利于组件的重用
分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
通过以上作用大大提高开发及维护效率。
2、struts2入门
2.1、struts2使用原因
实现了mvc思想是项目层次清晰,大大提高开发效率。2.2、执行流程
请求action-->web.xml(filter控制器)-->struts.xml(Action配置)-->action类方法-->struts.xml(result配置)2.3、xml基本配置
struts是配置文件的根元素,可以包含多个package元素。package:作用是将Action分组管理,内部可以定义多个Action.
*name属性:包名称.
*extends属性:继承哪个package,一般情况下继承自struts-default.
namespace属性:用于限定action请求名,默认值是"/"
action:作用是定义请求和Action组件之间的对应关系
*name属性:action组件对应的请求名
*class属性:指定action组件的实现类,包名.类名格式
method属性:指定要调用action类中哪个方法.默认值是execute
<result>:作用是定义响应视图
*name属性:响应视图标识符,该标识符与action组件方法返回值对应.
type属性:指定响应视图类型,默认值是dispatcher,请求转发
2.4、基本标签库
jsp页面引入标签库:<%@ taglib prefix="s" uri="/struts-tags"%><s:if test=""></s:if>
<s:elseif test=""></s:elseif>
<s:else></s:else>
<s:iterator value="userList" status="user">
姓名:<s:property value="userName" />
年龄:<s:property value="age" />
</s:iterator>
2.5 、Action如何使用request,session,application
Action实现以下Aware接口:RequestAware
SessionAware
ApplicationAware
ServletRequestAware
ServletResponseAware
ServletContextAware
3、demo
构建maven_struts项目参照:maven构建struts项目3.1、xml基本配置测试
struts.xml文件,struts元素添加:<!-- 开发使用的demo --> <include file="struts/struts-demo.xml"/>
src/main/config目录下新建struts目录,再struts目录下新建struts-demo.xml文件,内容:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <!-- 默认放在src根目录下,名称为struts.xml --> <struts> <package name="demo" namespace="/demo" extends="config"> <!-- 基本xml配置 --> <action name="userDisp01" method="userDisp01" class="com.cft.demo.struts.UserAction"> <result name="success">/demo/struts/userDisp01.jsp</result> </action> </package> </struts>
src/main/resources添加struts.properties文件,内容:
#指定默认编码集,对于请求参数带有中文的情况应该设置陈GBK或GB2312.默认值UTF-8 struts.i18n.encoding=GB2312 #但struts.xml改动后,是否重新加载该文件。在开发阶段建议将此属性设置为“true”,提高开发效率。默认值false struts.configuration.xml.reload=true #是否使用Struts2的开发模式,可以获得更多报错信息,便于调试。在开发阶段设置为true。默认值false struts.devMode = true #设置浏览器是否缓存静态页面。开发阶段设置为false,以获得服务器的最新响应。默认值true struts.serve.static.browserCache=false
src/main/java添加包:com.cft.demo.struts,再添加UserAction类:
package com.cft.demo.struts; public class UserAction { public String userDisp01(){ System.out.println("用户详情01"); return "success"; } }
src/main/webapp添加目录:demo/struts,再添加userDisp01.jsp文件:
<html> <body>用户详情01</body> </html>
验证 :
页面url输入: http://localhost:8080/003maven_struts/demo/userDisp01.action
页面及控制台出现:用户详情01,说明配置成功。
3.2、基本标签库测试
src/main/config/struts目录的struts-demo.xml文件,添加内容:<action name="userDisp02" method="userDisp02" class="com.cft.demo.struts.UserAction"> <result name="success">/demo/struts/userDisp02.jsp</result> </action>
src/main/java的com.cft.demo.struts包下添加User类:
package com.cft.demo.struts; public class User { public String name; public String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
src/main/java的com.cft.demo.struts包下的UserAction类添加:
private String test_value; private List userList; public String userDisp02(){ System.out.println("用户详情02"); test_value = "1"; User user = new User(); user.setName("cft"); user.setAge("20"); User user2 = new User(); user2.setName("cft2"); user2.setAge("22"); userList = new ArrayList(); userList.add(user); userList.add(user2); return "success"; } public String getTest_value() { return test_value; } public void setTest_value(String testValue) { test_value = testValue; } public List getUserList() { return userList; } public void setUserList(List userList) { this.userList = userList; }
src/main/webapp/demo/struts,添加userDisp02.jsp文件:
<%@ taglib prefix="s" uri="/struts-tags"%> <html> <body> 用户详情02 test_value:<s:property value="test_value" /> <br/> <s:if test='test_value.equals("1")'> test_value is 1 </s:if> <s:elseif test='test_value.equals("2")'> test_value is 2 </s:elseif> <s:else> test_value is other </s:else> <br/> <s:iterator value="userList" status="user"> 姓名:<s:property value="name" /><br/> 年龄:<s:property value="age" /><br/> </s:iterator>; </body> </html>
验证
页面输入: http://localhost:8080/003maven_struts/demo/userDisp02.action
页面:
![](http://images0.cnblogs.com/blog2015/785877/201507/311425311897978.jpg)
出现以上信息,说明验证成功。
相关文章推荐
- Java:String和Date、Timestamp之间的转换
- 『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★
- Java核心总结-----00篇
- spring mvc 上传文件
- Java排序算法实现
- 如何查看class文件的jdk版本
- Eclipse 使用 && 快捷键
- Mac下Android Studio配置JDK7
- Java 内部类实现原理简单分析
- Java String equals和==的详细介绍
- R.layout.main connot be resolved 和R.java消失
- 深入分析Java Web中的中文编码问题
- Java unicode 转中文
- EJB学习(三)——java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to..
- java中RSA加解密的实现
- Java SPI机制
- JAVA基础针对自己薄弱环节总结02(循环)
- MyEclipse中使用复制粘贴功能卡的解决办法
- Java 容器中的泛型
- springmvc @RequestParam @RequestBody @PathVariable 等参数绑定注解详解