Struts 入门

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

   1.pom.xml
      

<dependency>
    <groupId>javaeegroupId>
    <artifactId>javaee-apiartifactId>
    <version>5version>
dependency>

<dependency>
    <groupId>org.apache.strutsgroupId>
    <artifactId>struts2-coreartifactId>
    <version>2.3.4.1version>
dependency>

<dependency>
    <groupId>org.apache.struts.xworkgroupId>
    <artifactId>xwork-coreartifactId>
    <version>2.3.4.1version>
dependency>


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

    3.view视图
    
    请输入用户名:  

    

    
    

    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节点
       

    /success.jsp

        

    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


<dependency>
    <groupId>javaeegroupId>
    <artifactId>javaee-apiartifactId>
    <version>5version>
dependency>

<dependency>
    <groupId>org.apache.strutsgroupId>
    <artifactId>struts2-coreartifactId>
    <version>2.3.4.1version>
dependency>

<dependency>
    <groupId>org.apache.struts.xworkgroupId>
    <artifactId>xwork-coreartifactId>
    <version>2.3.4.1version>
dependency>

   web.xml
<filter>
  <filter-name>struts2filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>
filter>
<filter-mapping>
  <filter-name>struts2filter-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"?>
 struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    
    <package name="default" namespace="/" extends="struts-default">
        
        <action name="helloword"
                class="cn.struts.one.HelloWordAction">
            
            <result name="ss">helloword.jspresult>
        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 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.jspresult>
        <result name="input">1.jspresult>
    action>
package>
1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Titletitle>
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>Titletitle>
head>
<body>
<s:debug/>
<%--
第一种方式   session

欢迎

--%>
<%--第二种方式 session

欢迎

--%>
<%--第三种方式 request --%> <%--

欧叶

--%>
<%--第四种方式 application--%> <%--

啦啦

--%>
<%-- --%> <hr/> ${username} body> html>


你可能感兴趣的:(Struts 入门)