Struts 入门

来源:互联网 发布:qq空间模拟登录 php 编辑:程序博客网 时间:2024/05/19 10:08

  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>