zoukankan      html  css  js  c++  java
  • struts入门

    一、 Struts2的环境搭建

           1.在maven项目的pom.xml中引入Struts的依赖

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

        2.导入一些需要的配置文件

    struts-base.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.i18n.encoding" value="UTF-8" />
        <constant name="struts.devMode" value="true" />
        <constant name="struts.configuration.xml.reload" value="true" />
        <constant name="struts.i18n.reload" value="true" />
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    
        <package name="base" extends="struts-default" abstract="true">
            <global-allowed-methods>regex:.*</global-allowed-methods>
        </package>
    </struts>

     struts-sy.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <package name="sy" extends="base" >
        
        <action name="/hello_*" class="com.jt.HelloAction" method="{1}">
          <result name="success">/success.jsp</result>
        </action>
        </package>
    </struts>

    struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <include file="struts-default.xml"></include>
        <include file="struts-base.xml"></include>
        <include file="struts-sy.xml"></include>
    </struts>

    在XML里面配置一下过滤器

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
      <display-name>Archetype Created Web Application</display-name>
      <filter>
      <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
      </filter-mapping>
    </web-app>

     动态调用

    实体类user

    package com.jtc;
    
    public class User {
    
        private String uid;
        private String uname;
        public String getUid() {
            return uid;
        }
        public void setUid(String uid) {
            this.uid = uid;
        }
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
        @Override
        public String toString() {
            return "User [uid=" + uid + ", uname=" + uname + "]";
        }
        public User(String uid, String uname) {
            super();
            this.uid = uid;
            this.uname = uname;
        }
        public User() {
            super();
            // TODO Auto-generated constructor stub
        }
        
    }

    action

    package com.jt;
    
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.ServletResponseAware;
    import org.omg.PortableInterceptor.SUCCESSFUL;
    
    import com.jtc.User;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ModelDriven;
    
    /**
     * 1.动态方法调用(MVC不具备的优势) 
     * 2.Struts中的参数 
     *  1.set传参
     *  2.参数名。属性名传参 
     *  3实现modeldriven接口传参
     * 3.struts与tomacat的交互 如何将后台的值传到前台去 
     *  1.request传值
     * 
     * 
     *
     */
    public class HelloAction implements ModelDriven<User>,ServletRequestAware,ServletResponseAware {
    
        private HttpServletRequest request;
        private HttpServletResponse response;
        private User user1 = new User();
        private User user2;
        private String sex;
        private String uname;
        
        public String getUname() {
            return uname;
        }
    
        public void setUname(String uname) {
            this.uname = uname;
        }
    
        public User getUser2() {
            return user2;
        }
    
        public void setUser2(User user2) {
            this.user2 = user2;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public String add() {
            System.out.println("add方法");
            return "success";
        }
    
        public String del() {
            System.out.println("del方法");
            return "success";
        }
    
        public String edit() {
            System.out.println("edit方法");
            return "success";
        }
    
        public String list() {
            System.out.println("list方法");
            System.out.println("user1:" + user1);
            System.out.println("user2:" + user2);
            System.out.println("sex:" + sex);
            System.out.println("uname:"+uname);
    //        HttpServletRequest request= ServletActionContext.getRequest();
    //        request.setAttribute("rs",user1);
            this.request.setAttribute("rs", user1);
            return "success";
        }
    
        @Override
        public User getModel() {
            // TODO Auto-generated method stub
            return user1;
        }
    
        @Override
        public void setServletRequest(HttpServletRequest request) {
            this.request=request;
        }
    
        @Override
        public void setServletResponse(HttpServletResponse response) {
            this.response=response;
        }
    
    }

    创建一个JSP页面去测试

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>struts传参的三种方式</h2>
    <a href="${pageContext.request.contextPath }/sy/hello_list.action?uid=001&&uname=zs">测试modeldriven接口传参</a>
    <a href="${pageContext.request.contextPath }/sy/hello_list.action?sex=nv">测试set接口传参</a>
    <a href="${pageContext.request.contextPath }/sy/hello_list.action?user2.uid=002&&user2.uname=ls">测试参数名.属性名接口传参</a>
    <h2>与J2EE容器的交互</h2>
    </body>
    </html>

    再用一个jsp页面来接受结果

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    成功页面:${rs }
    </body>
    </html>

    三种测试打印结果

    测试modeldriven接口传参
    user1:User [uid=001, uname=zs]
    user2:null
    sex:null
    uname:null
    测试set传参
    user1:User [uid=null, uname=null]
    user2:null
    sex:nv
    uname:null
    测试参数名.属性名传参
    user1:User [uid=null, uname=null]
    user2:User [uid=002, uname=ls]
    sex:null
    uname:null

    注入与非注入

     注入,注入需要实现ServletRequestAware接口,重写需要实现的方法setServletRequest;

      将setServletRequest方法的参数私有化作为属性

    首先

    public class HelloAction implements ModelDriven<User>,ServletRequestAware{
    }
    private HttpServletRequest request;

    setServletRequest

        @Override
        public void setServletRequest(HttpServletRequest request) {
            this.request=request;
    
        }

    属性调用

        public String list() {
            System.out.println("list方法");
            System.out.println("user1:" + user1);
            System.out.println("user2:" + user2);
            System.out.println("sex:" + sex);this.request.setAttribute("rs", user1);
            return "success";
        }

    非注入

        public String list() {
            System.out.println("list方法");
            System.out.println("user1:" + user1);
            System.out.println("user2:" + user2);
            System.out.println("sex:" + sex);
            HttpServletRequest request= ServletActionContext.getRequest();
            request.setAttribute("rs",user1);
            return "success";
        }
  • 相关阅读:
    NHibernate之映射文件配置说明(转载3)
    NHibernate之映射文件配置说明(转载2)
    NHibernate之映射文件配置说明(转载1)
    NHibernate+NUnit (VS2012+SQL Server2008) (转)
    ASP.NET MVC全局观
    使用Razor来进行页面布局
    视图引擎输出字符串
    @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
    Html.Action和Html.RederAction来创建子视图
    从客户端检测到有潜在危险的Request.Form值
  • 原文地址:https://www.cnblogs.com/ztbk/p/11239932.html
Copyright © 2011-2022 走看看