天天看点

[Java web]-- struts2(1)

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();
 =====================================================================================