Struts 2入门案例

Struts2 MVC框架,
  Struts2-Core  Struts2核心包
  Xwork-core    Xwork 核心,构建基础
  JavaSist-GA   底层字节码生成
  File-upload   文件上传
  --------------------
  commons-io     IO操作
  commons-lang  数据类型的处理工具类
  freemarker      模板引擎
  ognl   表达式

   1.pom.xml
      
<!--获取ServletAPI-->
<dependency>
    <groupId>javaee</groupId>
    <artifactId>javaee-api</artifactId>
    <version>5</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.struts.xwork</groupId>
    <artifactId>xwork-core</artifactId>
    <version>2.3.4.1</version>
</dependency>


    2.配置web.xml
      配置的是什么?
      解析:过滤器 核心过滤器 StrutsPrepareAndExcuteFilter

    3.view视图
    <s:form name="form1" method="post" action="login">
    请输入用户名: <s:textfield name="username"></s:textfield> <br/>
    <s:textfield name="password"></s:textfield><br/>
    <s:submit value="登陆"></s:submit>
    </s:form>

    4.定制Action
      public class UserAction implements Action{
    //SUCCESS  NONE  INPUT LOGIN ERROR
    //SpringMvc Controller
    public String execute() throws Exception {
    return SUCCESS;
           }
     }
     5.struts.xml
       根节点Struts节点
       <package name="default" namespace="/" extends="struts-default">
<action name="userAction" class="cn.happy.action.UserAction">
    <result name="success">/success.jsp</result>
</action>
        </package>

    6.部署运行

3.自动装配
  Struts2  自动装配 AutoAWired(PageUI  ----->控制器属性)
 拦截器
  领域模型的自动装配
4.ServletAPI 去获取常见对象Session ,request
   与Servlet API解耦的访问方式
            方案一: 对Servlet API进行封装   ,借助ActionContext
  --->01.使用ActionContext类获取ServletAPI对象对应的Map对象
            方案二:向Action中注入ServletAPI对象对应的Map对象
   --->02.Struts2向Action注入ServletAPI对象对应的Map对象  
   与Servlet API耦合的访问方式
           方式一:通过ActionContext的子类ServletActionContext实现

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

入门案例    

  pom.xml

<!--获取ServletAPI-->
<dependency>
    <groupId>javaee</groupId>
    <artifactId>javaee-api</artifactId>
    <version>5</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.struts.xwork</groupId>
    <artifactId>xwork-core</artifactId>
    <version>2.3.4.1</version>
</dependency>

   web.xml
<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

HellowordAction类
public class HelloWordAction implements Action {
    //请输入用户的姓名
    private String name="";
    //向用户现实的信息
    private String message="";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * excute方法,当struts2处理用户请求时,在默认配置下调用的方法
     * @return
     * @throws Exception
     */
    public String execute() throws Exception {
        //根据用户输入的姓名,进行“Hello,xxx"的封装
        this.setMessage("Hello,"+this.getName()+"!");
        //处理完毕,返回”helloword“
        return "ss";
    }
}
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>
    <!--创建一个default包,继承自Struts2的struts-default包-->
    <package name="default" namespace="/" extends="struts-default">
        <!--接受处理用户的/helloword.action请求,并根据返回结果,完成跳转-->
        <action name="helloword"
                class="cn.struts.one.HelloWordAction">
            <!--结果为”helloword时,跳转至helloword.jsp页面-->
            <result name="ss">helloword.jsp</result>
        </action>
    </package>
</struts>
运行效果图
(1)
(2)
    上课案例: 
      UserINfo类
public class UserINfo {
    private String username;
    private String password;    
   UserAction类
public class UsesrAction implements Action {
    private UserINfo userINfo;

    public UserINfo getUserINfo() {
        return userINfo;
    }

    public void setUserINfo(UserINfo userINfo) {
        this.userINfo = userINfo;
    }

    public String execute() throws Exception {
        if ("admin".equals(userINfo.getUsername())&&"admin".equals(userINfo.getPassword())) {
            //登录成功显示用户
              //第一种方式 session
            ActionContext context=ActionContext.getContext();
            Map<String,Object> map=context.getSession();
            map.put("username",userINfo.getUsername());

           //第二种方式 session
           /* HttpSession session = ServletActionContext.getRequest().getSession();
            session.setAttribute("username",userINfo.getUsername());*/

           /* 放入值栈  (1)*/
            ValueStack valueStack = ActionContext.getContext().getValueStack();
             valueStack.push(map);

           /* 放入值栈  (2)*/
           /* HttpServletRequest request = ServletActionContext.getRequest();
            ValueStack vs= (ValueStack) request.getAttribute("struts.valueStack");
            request.setAttribute("username",userINfo.getUsername());
*/
          /*第三种方式  request */
          /* HttpServletRequest request = ServletActionContext.getRequest();
            request.setAttribute("username",userINfo.getUsername());*/

           /*第四种方式  application */
           /* ServletContext servletContext = ServletActionContext.getServletContext();
            servletContext.setAttribute("username",userINfo.getUsername());*/

            return SUCCESS;
        }else {
            return INPUT;
        }
    }
}
 struts.xml
<package name="default" namespace="/" extends="struts-default">
    <action name="useraction" class="cn.struts.UsesrAction">
        <result name="success">/success.jsp</result>
        <result name="input">1.jsp</result>
    </action>
</package>
1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<s:form method="POST" action="useraction">
  <%--性能低--%>
    请输入用户名:<s:textfield name="userINfo.username"></s:textfield><br/>
    <s:textfield name="userINfo.password"></s:textfield>
    <s:submit value="登陆"></s:submit>
</s:form>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<s:debug/>
<%--
第一种方式   session
<h2>欢迎</h2> <s:property value="userINfo.username"/>--%>

<%--第二种方式 session
<h2>欢迎</h2> <s:property value="#session.username"/>--%>

<%--第三种方式  request --%>
<%--<h2>欧叶</h2><s:property value="#request.username"/>--%>

<%--第四种方式  application--%>
<%--<h2>啦啦</h2><s:property value="#application.username"></s:property>--%>


<%--
<s:property value="username"></s:property>--%>
<hr/>
${username}
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值