MVC 思想
|
M |
V |
C |
|
Model |
View |
Controller |
|
数据模型层:DAO/service/entity |
视图层: Jsp/html/freemarker/volicity |
控制层:servlet、struts2、springMVC
|
MVC思想的好处:解耦合,提高系统的可维护性和可拓展性
Struts2框架概述: 充当了MVC中的C 替换了Servlet //底层封装了Servlet相关API, 但是它不是 Servlet
也就是应用javaee三层结构中的web层框架 实在struts1 和webwork基础上发展的全新框架。
web层常见框架 :
(1) struts2
(2)springMVC
Struts2官方文档目录:

如果想要使用Struts2框架 首先需要导入jar包
(1)在lib中有jar包,不能把这些jar都导入到项目中
(2)到apps目录里面,找到示例程序,从示例程序复制jar包

做初始化配置 - 开启struts2框架 在web.xml中进行配置

类比于web中的Servlet 每次访问的时候都会执行service方法
每次访问action都会执行execute方法
public String execute() throws Exception { return SUCCESS; }
配置action的访问路径
创建struts2的核心配置文件
核心配置文件名称和位置都是固定的 位置必须在src下 ,名称 struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> </struts>

访问路径是localhost:8087/项目名/action中name属性的值。
struts2的执行过程

过滤器在服务器启动的时候进行创建,创建过滤器的时候执行init方法
在init方法中主要加载配置文件 包含自己创建的配置文件和struts2自带的配置文件
struts.xml
web.xml
struts2的配置文件详解
<package name="find" extends="struts-default" namespace="/"> <action name="findUser" class="com.baizhi.action.findLink"> <result name="success">/linkmanList.jsp</result> </action> </package>
标签package
类似于包 主要用于区分不同的action ,
name属性:在一个配置文件中可以有多个package 但是package得name属性值不能相同
extends="struts-default" 属性值是固定的 只有写了这个属性之后,在package里面配置的类具有action功能
namespace ="" namespace与action中的name属性值构成访问路径
每一个package标签都有一个namesapce属性,主要的作用就是从访问路径上、区分不同package下的action,namespace的值是访问某个action路径的一部 分,namespace的值 必须 以 / 开头。
注意:namespace 的默认值 是 / ,在同一个struts.xml中,只能有一个package的默认形式。
标签action=""
name 属性 配置action的访问路径 与namespace进行配合
在一个package中可以有多个action标签,但是action的name属性值不能相同
class 属性 action的全限定性类名
method 属性
在一个action中默认执行的是execute方法如果想在同一个actuion中执行自定义方法则需要这个属性
<action name="password_*" class="com.baizhi.action.modifyLink" method="{1}"> <result name="success" type="redirectAction">findUser</result> <result name="ok" type="redirectAction">findUser</result> </action>
例如: password_update 那么数字1 代表update *的占位符 几个* 就代表数字几
标签result
1 根据action的方法返回值,配置到不同的路径里面
2 result标签属性
(1)name属性
- 和方法返回值一样
标签Type
- 配置如何到路径中(转发或者重定向)
- type属性默认值 做转发操作
跨包跳转 只有action->action

同一个package下的跳转
1. action-->jsp
forward(默认状态)
<result name="ok" type="dispatcher">/success.jsp</result>
redirect
<result name="ok" type="redirect">/success.jsp</result>
2.action—>action
forward
<result name="ok" type="chain">action名字没有 / </result>
redirect
<result name="ok" type="redirectAction">action名字没有 / </result>
全局跳转
作用:解决result标签配置冗余
注意:1.全局跳转标签必须配置在所有action之前。
2.全局跳转只在本包内有效
3.当全局跳转与 局部跳转冲突的时候 ,会以局部跳转优先。

总结跳转:


Struts2常量配置
<!-- 设置默认的编码集 --> <constant name="struts.i18n.encoding" value="utf-8"></constant>
(1)表单提交数据到action里面,在action可以获取表单提交数据,
(2)表单提交数据有中文,有乱码问题,解决:
- post提交直接设置编码
- get提交做编码转换
(3)如果在action获取表单通过post方式提交中文,中文乱码问题帮解决了,不需要自己处理问题
Struts2的分模块开发
单独写配置文件将配置文件引入到核心配置文件中
<include file="com/baizhi/config/modify.xml"></include>
Action编写的三种方式
第一种 创建普通类,这个不继承任何类,不实现任何接口
第二种 创建类,实现接口 Action
第三种 创建类,继承类 ActionSupport(一般使用)
访问action的方法重点
第一种 使用action标签的method属性,在这个属性里面写执行的action的方法

使用Method访问

第二种 使用通配符方式实现
第三种 动态访问实现(不用)
action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
- 把方法写成void
- 让返回值,返回 ”none”

如果eclipse没有提示的解决方法的
windows ---》preferencecs--》


原文:https://www.cnblogs.com/zhulina-917/p/11519472.html