您的位置:首页 > 编程语言 > Java开发

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
页面:



出现以上信息,说明验证成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: