• Struts2初体验


    1.Struts2简介

    Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点

    Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性

     

    Struts官网

    http://struts.apache.org/

    apps目录:Struts2示例应用程序

    docs目录:Struts2指南、向导、API文档

    lib目录:Struts 2的发行包及其依赖包

    src目录:Struts 2项目源代码

    2.Struts2案例

    使用struts2开发步骤:

    1.引入相关依赖jar包

    2.web.xml文件配置核心过滤器

    3.视图层页面

    4.控制层Action

    5.struts.xml文件的配置

    1.1登陆案例(零散参数的自动装配)

    1.引入相关依赖jar包

     1         <dependency>
     2             <groupId>javaee</groupId>
     3             <artifactId>javaee-api</artifactId>
     4             <version>5</version>
     5         </dependency>
     6 
     7         <dependency>
     8             <groupId>org.apache.struts</groupId>
     9             <artifactId>struts2-core</artifactId>
    10             <version>2.3.4.1</version>
    11         </dependency>
    12 
    13         <dependency>
    14             <groupId>org.apache.struts.xwork</groupId>
    15             <artifactId>xwork-core</artifactId>
    16             <version>2.3.4.1 </version>
    17         </dependency>

    2.web.xml文件配置核心过滤器

    1   <filter>
    2     <filter-name>struts</filter-name>
    3     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    4   </filter>
    5   <filter-mapping>
    6     <filter-name>struts</filter-name>
    7     <url-pattern>/*</url-pattern>
    8   </filter-mapping>

    3.视图层页面

     1 <%@ taglib prefix="s" uri="/struts-tags" %>
     2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     3 <html>
     4 <head>
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <%--struts标签 --%>
     9 <s:form name="form1" namespace="/" method="POST" action="userAction">
    10     用户名:<s:textfield name="username"></s:textfield><br/>
    11     密码:<s:password name="password"></s:password><br/>
    12     <s:submit value="登录"></s:submit>
    13 </s:form>
    14 </body>
    15 </html>

    4.控制层Action

     1 public class LoginAction implements Action {
     2     private String username;
     3     private String password;
     4     public String execute() throws Exception {
     5         //如果输入的用户名密码是admin则登陆成功,否则登录失败
     6         if (username.equals("admin") && password.equals("admin")){
     7             return SUCCESS;
     8         }else {
     9             return LOGIN;
    10         }
    11     }
    12 
    13     public String getUsername() {
    14         return username;
    15     }
    16 
    17     public void setUsername(String username) {
    18         this.username = username;
    19     }
    20 
    21     public String getPassword() {
    22         return password;
    23     }
    24 
    25     public void setPassword(String password) {
    26         this.password = password;
    27     }
    28 }

    5.struts.xml文件的配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4         "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7     <package name="default" namespace="/" extends="struts-default">
     8         <!--零散参数的自动装配-->
     9         <action name="userAction" class="cn.happy.controller.LoginAction">
    10             <result name="success">
    11                 day01/success.jsp
    12             </result>
    13             <result name="login">
    14                 day01/login.jsp
    15             </result>
    16         </action>
    17     </package>
    18 </struts>

    1.2 Struts2各个部件的协作图

     1.3登陆案例加强(javabean自动装配)

    Action类:

     1 public class LoginBeanAction implements Action,ModelDriven<UserInfo> {
     2     private UserInfo info=new UserInfo();
     3     public String execute() throws Exception {
     4         if (info.getUsername().equals("admin") && info.getPassword().equals("admin")){
     5             //解耦方式获取sesion
     6             //提供了三个Map对象访问request、session、application作用域 通过ActionContext类获取这三个Map对象
     7             Map<String, Object> map = ActionContext.getContext().getSession();
     8             Map<String, Object> mapapplication = ActionContext.getContext().getApplication();
     9             Object request = ActionContext.getContext().get("request");
    10             map.put("username",info.getUsername());
    11             return SUCCESS;
    12         }
    13         else {
    14             return LOGIN;
    15         }
    16     }
    17 
    18     public UserInfo getInfo() {
    19         return info;
    20     }
    21 
    22     public void setInfo(UserInfo info) {
    23         this.info = info;
    24     }
    25 
    26     public UserInfo getModel() {
    27         return info;
    28     }
    29 }

    jsp页面

     1 <%@ taglib prefix="s" uri="/struts-tags" %>
     2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     3 <html>
     4 <head>
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <%--struts标签 --%>
     9 <s:form name="form1" namespace="/" method="POST" action="loginbean">
    10     用户名:<s:textfield name="username"></s:textfield><br/>
    11     密码:<s:password name="password"></s:password><br/>
    12     <s:submit value="登录"></s:submit>
    13 </s:form>
    14 </body>
    15 </html>

    1.4Struts 2访问Servlet API

    在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?

        解析:将用户名放入session 两种方案

    1. 与Servlet API解耦的访问方式

        --->方案一:使用ActionContext类获取ServletAPI对象对应的Map对象

        --->方案二:向Action注入ServletAPI对象对应的Map对象

    2. 与Servlet API耦合的访问方式

         --->方式一:通过ActionContext的子类ServletActionContext实现

         --->方式二:向Action实例注入Servlet API对象

    解耦方式:

    方案一:

    方案二:

     

    耦合方式

    方案一:

     

    方案二:

     

  • 相关阅读:
    设计模式系列
    设计模式系列
    【ABAP系列】SAP ABAP DYNP_VALUES_UPDATE 更新屏幕字段的函数及用法
    【HANA系列】SAP HANA 2.0简介
    【HANA系列】SAP HANA Studio使用insufficient privilege 问题
    【HANA系列】SAP HANA Studio出现"Fetching Children..."问题
    【ABAP系列】SAP ABAP smartforms设备类型CNSAPWIN不支持页格式ZXXX
    【BW系列】SAP BW实时抽取ECC数据的实现
    【ABAP系列】SAP ABAP 行列转换的方法
    【HANA系列】SAP HANA数据处理的理解与分析一
  • 原文地址:https://www.cnblogs.com/liutao1122/p/8467309.html
Copyright © 2020-2023  润新知