• Struts2初步接触


     使用idea快速搭建Struts2的Maven项目 

      首先使用intelij idea部署Maven项目

    1.jar包引入 pom.xml

    我们用的是阿里云

    我用的是最新版的Struts2核心jar包和最新版的xwork jar包

    只需引入这两个节点

         <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts2-core</artifactId>
              <version>2.5.8</version>
            </dependency>
    
            <dependency>
              <groupId>org.apache.struts.xwork</groupId>
              <artifactId>xwork-core</artifactId>
              <version>2.3.8</version>
            </dependency>

    2.接下来书写web.xml

    直接上全部代码

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <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>/*</url-pattern>
        </filter-mapping>
        <welcome-file-list>
       <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
    </web-app>

    3.然后就是jsp页面的书写了(View视图书写),我用了两个页面,一个登陆页面,一个登陆成功页面

    这是登陆页面,附加说明。我引入了javaee的jar包,不然

    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    这会报错的。还有一种解决办法,就是在服务器引入Servletjar包
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@ page isELIgnored="false"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>登录</title>
        <h1>登录</h1>
        <s:form action="LoginAction" namespace="/" method="POST">
            <s:textfield name="users.name"></s:textfield><s:fielderror fieldName="ename"></s:fielderror><br/>
            <s:textfield name="users.pwd"></s:textfield><s:fielderror fieldName="epwd"></s:fielderror><br/>
            <s:submit value="登录"></s:submit>
        </s:form>
    <s:debug></s:debug>
    </head>
    
    <body>
    </body>
    </html>
    这是成功页面
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <%@ page isELIgnored="false"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>成功</title>
    </head>
    <body>
    <h1>登录成功欢迎${name}您的密码是${pwd}</h1>
    </body>
    </html>

    4.书写我们的Action
    package cn.curry.entity;
    
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.SessionAware;
    
    import javax.servlet.http.HttpSession;
    import java.util.Map;
    
    
    /**
     * Created by Curry on 2017/2/27.
     */
    public class LoginAction extends ActionSupport {//还可以实现 Action
        private Users users;//实体po
        private Map<String,Object> map;
        //效验
        public void validate(){
            if(users.getName().length()==0){
                addFieldError("ename","用户名不为空");
            }
            if(users.getPwd().length()==0){
                addFieldError("epwd","密码不为空");
            }
    
        }
        //使用Servlet API去向Session中放入数据
        public String execute() throws Exception {
            if (users.getName().equals("admin")&&users.getPwd().equals("1")){
                //解耦
                Map<String, Object> session = ActionContext.getContext().getSession();
                session.put("name",users.getName());
                session.put("pwd",users.getPwd());
                //解耦2
                /*map.put("name",users.getName());
                map.put("pwd",users.getPwd());*/
                //耦合
                /*HttpSession session = ServletActionContext.getRequest().getSession();
                session.setAttribute("name",users.getName());
                session.setAttribute("pwd",users.getPwd());*/
                return SUCCESS;//常亮
            }else{
                return INPUT;
            }
        }
    
        public Users getUsers() {
            return users;
        }
    
        public void setUsers(Users users) {
            this.users = users;
        }
    
        public void setSession(Map<String, Object> session) {
            this.map=session;
        }
    }

    4.1实体类
    package cn.curry.entity;
    
    /**
     * Created by Curry on 2017/2/27.
     */
    public class Users {
        private String name;
        private String pwd;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
    5.在classpath,写一个名称为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>
        <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
        <constant name="struts.devMode" value="true"/>
        <package name="default" namespace="/" extends="struts-default">
            <action name="LoginAction" class="cn.curry.entity.LoginAction">
                <result name="success">success.jsp</result>
                <result name="login">index.jsp</result>
                <result name="input">index.jsp</result>
            </action>
        </package>
    </struts>

    6.部署运行,笔者使用的事Tomcat8,jdk事1.8

    第一次使用Struts2来写一个小例子,遇到问题也比较多。很多都是jar包问题,再加上idea用的不熟(之前用myeclipse),波折颇多,最后圆满成功。

     
  • 相关阅读:
    【P1133】 教主的花园
    【P1095】 守望者的逃离
    【P1063】 能量项链
    【模板】st表
    【模板】单源最短路径——Floyd
    jQuery的XX如何实现?——4.类型检查
    jQuery的XX如何实现?——3.data与cache机制
    jQuery的XX如何实现?——2.show与链式调用
    jQuery的XX如何实现?——1.框架
    《拖延症再见》
  • 原文地址:https://www.cnblogs.com/cuntouyixiaohuo/p/6479527.html
Copyright © 2020-2023  润新知