0.mvc:model  view  controller
模型 视图 控制器
项目架构中,把项目代码加以模块化管理划分:
model: 模型 业务模型+数据模型 组织业务,及业务内部的数据处理 Service+DAO+Entity(javabean)
view: 视图 展示数据 JSP
controller:控制器 调度mvc流程,调度model及view Servlet

javaweb阶段采用mvc解决方案:(Service+DAO)+Servlet+JSP
优点:责任单一,各司其职
开发过程中有利于多人协作开发,也有利于项目后期的维护升级
======================================================================================
1.struts2 mvc框架
框架:软件开发过程中的半成品,封装通用功能,提高开发效率
apache开源组织 开源框架
职责:作用在mvc流程中,充当Controller的角色,调度整个MVC流程
:提供了更好的控制器Action,替代Servlet
======================================================================================
2.struts2开发流程:
2.1 导入依赖的jar包:
核心jar:struts2-core.jar xwork-core.jar
第三方依赖jar:其余
2.2 设置struts2的前端控制器:在web.xml中配置
作用:过滤所有请求,使请求进入struts2的处理流程
本质:Filter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
2.3 定义Action类(后端控制器):
UserAction extends ActionSupport{
public String execute(){
System.out.println("UserAction~~~~");
return null;
}
}
2.4 在struts.xml中配置Action
\struts-2.3.16\apps\struts2-blank\WEB-INF\classes\struts.xml
*注意:struts.xml必须放置在src下

<package name="c3535" extends="struts-default">
<action name="c35" class="com.c35.action.UserAction"></action>
</package>
2.5 访问:
​​​ http://localhost:8989/struts2_day1/c35​​​ =====================================================================================
3.Action中选择视图
*webRoot/view35/abc.jsp
3.1
extends ActionSupport{
public String execute(){
System.out.println("UserAction~~~~");
return "c36";//随意的字符串返回
}
}
3.2
<package name="c3535" extends="struts-default">
<action name="c35" class="com.c35.action.UserAction">
<result name="c36">/view35/abc.jsp</result>
</action>
</package>
=====================================================================================
4.Action接收请求参数:只需要在Action类中定义和请求参数同名的成员变量即可(set/get);
<form>
<input type="text" name="username"/>
<input type="text" name="password"/>
<input type="submit" value="xx"/>
</form>
param:{username:xxx,password:xxxx}

class UserAction extends ActionSupport{
//接收请求参数
private String username;
private String password;
set/get;
public String execute(){
//直接使用
System.out.println(this.username);
}
}
*struts2不仅可以通过同名的成员变量接收请求参数,且简单的类型转可以自动完成,如:
字符串-->数字
*struts2也可以进行 字符串-->java.util.Date
struts2可以识别的日期字符串格式:yyyy-MM-dd
yyyy-MM-ddTHH:mm:ss
=====================================================================================
5.数据处理:service业务结果数据的处理
Model Controller JSP
data data data
作用域
data

1.Action 获得Service的业务结果
2.Action将业务结果存储到作用域中 ====
3.JSP通过EL从作用域中获取数据
4.JSP通过<c:forEach <c:if ${} 展示数据
<c:forEach items="${requestScope.xx}">
<tr>
<td>EL</td>
</tr>
</c:forEach>
*struts2 工具类:
//当前的请求对象
HttpServletRequest req=ServletActionContext.getRequest();
//当前Session对象
HttpSession session=req.getSession();
//获取当前的response对象
HttpServletResponse res=ServletActionContext.getResponse();
=====================================================================================