java学习笔记之---Struts2基础

时间:2023-02-26 18:40:57

1.Struts2是什么:

Struts2是基于MVC的WEB应用框架

Struts2=Struts1的知名度和市场+WebWork的技术

2.Struts2的优势是什么

  1. 实现MVC模式,结构清晰,Struts2替代了原先的servlet的控制层C的位置

  2. 丰富的标签(tag)(S标签库)

  3. 通过配置文件页面导航,便于后期维护,resource下的Struts.xml文件,通过进行导航跳转

  4. 与servlet API 松耦合,便于测试(把原先的HTTPDSession和HttpServletRequest从servlet API中剥离,转换成Map键值对)

3.Struts2流程分析

步骤包括:

  • 浏览器通过URL发送请求到服务器

  • web.xml拦截器拦截到请求,由StrutsPrepareAndExcuteFilter核心控制器分发给Struts.xml文件

  • Action业务控制器进行业务逻辑操作后,return返回一个字符串对应的Struts.xml文件中resultde name

浏览器 - 服务器 - web.xml - struts.xml - Action - Struts.xml - 浏览器

4.创建业务控制器的Action方式'

共有三种:普通的Java类,实现Action借口,继承ActionSupport类,调用方法一致

5.Struts2与MVC

Struts2是基于MVC的web应用框架,他将请求和展现分开实现

M:模型层

用于处理业务逻辑关系和数据的封装传递: 例如:业务逻辑层Service实现类(数据对象模型)

v:视图层

用于显示数据和接受用户请求

例如Html,jsp

C:控制层 用于协调模型和试图

例如:servlet,Struts2(核心控制器和业务控制器)

6.Action的作用

控制业务逻辑

如果业务逻辑很复杂,可以把业务楼基层建成为业务类,在Action中调用业务类返回结果字符串(例如:Success|error\自定义字符串)

方便处理数据

例如:Action中一属性方式接受用户数据

7.Action接收数据

属性方式:

控制业务逻辑

表单参数名称必须在Action中有对应的setter以及getter

解决乱码

修修改Struts2.xml,添加代码<constant name="Struts2.i18n." value="编码格式">

页面显示

<%taglib url="/struts.tags" prefix="s"%><s:property value="属性名"/>或者

应用场景

接受的参数字段个数少的时候使用,比如对于搜索应用,接受用户输入的搜索条件

JAVAbean方式(Action接收参数)

讲模型数据从ACtion中分离出来

定义实体类com.entity,User,为实体添加属性以及set特如何getter

为Action添加实体属性以及setter和getter

User user

修改表单参数name为实体对象名.属性名

<input type="text" name="user.username"/>

取值通过<s:property value="对象名.属性名"/>的形式

<s:property value="user.userName"/>

8.使用method属性(静态调用方法)

访问Action时,默认调用的是execute()方法

可以在Action中定义多个业务方法(例如:publicStringadd(){} public String update(){})

方法签名要与二色cute()方法相同

配置多个<action>标签

method属性制定调用的方法

(例如:<action name="toAdd" class="..xxAction" method="Action中的方法名">..</action>)

9.使用动态方法调用Action业务方法

(1)DMI (dynamic method invocation)动态方法调用

所需配置:

strtus.xml中必须有所需配置

<!--配置参数:动态方法调用开关--> <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

(2)一个Action勒种可以有多个业务方法

(例如:publicStringadd(){} public String update(){})

(3)只需要配置一个<action>标签

<action name="toAdd" class="..xxAction" method="Action中的方法名">..</action>

(4)不需要使用method属性

(5)调用时指出Action名和业务方法

例如:http://localhost:8080/Struts2_01/XXX!add

10.<result>的name属性

根据Action业务方法的返回值跳转不同的结果视图

例如:

当登录成功时,Action返回字符串Sucess,则调用result的name属性值为Success的分支跳转成功页面

当登录失败时,Action返回字符串error,则调用result的name属性为error的分支跳回登录页

if("admin".equals(user.getUserName())&&"123456".equals(user.getPassword())){

本文为头条号作者发布,不代表今日头条立场。