• [SSH] Eclipse+Struts2的简单应用


    终于要开始研究框架了,没有大神的指导,只能自己上网摸索着来,没有唯一对的方案,只能找到最适合自己的就可以了。

    首先整理一下,代码是参考别人的代码,按照别人的版本有问题,大概整理了一下,自己重新弄了一个,注意下标红的部分,每个人碰到的问题可能不一样,这次的环境(基本都是当前最新的,64位,如果有需要的可以留言):

    Eclispe:eclipse-jee-mars-R-win32-x86_64 (J2EE)

    Tomcat:apache-tomcat-8.0.24-windows-x64

    Structs:struts-2.3.24-apps.zip (因为里面会有空的blank例子,包肯定是正确的)

    完成的功能:映射显示jsp页面,validation验证。

    1.首先要确保自己的JDK、和Tomcat配置正确,这里就不一一叙述了。

    2.Eclipse里面File-> New-> Dynamic Web Progect (基本都选择默认的就可以了),本例子的名字为SSHProject (之后会继续整合Spring和Hibernate)

    3.拷贝相应的包

      3.1解压打开struts-2.3.24-apps.zip  里面app下面的 struts2-blank.war (打开war的方法,可以再相同工作目录下,建立一个rar,双击rar,然后如图示点击向上,就可以显示war,双击解压即可)

             

     3.2 把blank中 WEB-INF中lib下面的包 都拷贝到 新建工程的 WEB-INF的lib中(不要多拷贝,也不要少拷贝)

         

    3.3 打开blank.app.WEB-INF 下面的web.xml 将其中的Filter部分拷贝到工程对应的web.xml中

      

    4.建立工程代码

    4.1 struts.xml 

     (注意拼写和大小写,要在Java Resources下的 src下面 )

      写出具体jsp的映射(先看代码,读完后面的可以再返回来理解)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
    
        <include file="struts-default.xml" />
        <package name="tiny" extends="struts-default">
            <action name="register" class="com.tiny.ssh.action.RegisterAction">
                <result name="input">/Register.jsp</result>
                <result name="success">/success.jsp</result>
                <result name="error">/fail.jsp</result>
            </action>
        </package>
    
    </struts>

    4.2 其他包的相应的代码:

     RegisterAction.java:

    package com.tiny.ssh.action;
    
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.tiny.ssh.beans.UserForm;
    import com.tiny.ssh.service.UserManager;
    import com.tiny.ssh.serviceImp.UserManagerImpl;
    
    public class RegisterAction extends ActionSupport {
    
        private static final long serialVersionUID = 1L;
    
        private UserForm user;
    
        private UserManager userManager;
    
        public UserForm getUser() {
            return user;
        }
    
        public void setUser(UserForm user) {
            this.user = user;
        }
    
        public UserManager getUserManager() {
            return userManager;
        }
    
        public void setUserManager(UserManager userManager) {
            this.userManager = userManager;
        }
    
        public String execute() {
            try {
                this.setUserManager(new UserManagerImpl());
                userManager.regUser(user);
                return SUCCESS;
    
            } catch (Exception e) {
                e.printStackTrace();
                return ERROR;
            }
        }
    
    }

     RegisterAction-validation.xml(上一个的验证,固定名字 [Action-Name]-validation,注意上面的头部代码,会因为版本的问题出现错误,选择其中好使的一个):

     以前param的name都为expression struts2 2.3.x这个版本不好使了 要改为regex 可以自行查阅文档。

    <?xml version="1.0" encoding="GBK"?>
    <!-- 版本不一致 选择下面两个的一个 -->
    <!-- 
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
     -->
     <!DOCTYPE validators PUBLIC
     "-//Apache Struts//XWork Validator 1.0.2//EN" 
     "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
    
    <validators>
        <!-- 添加对用户名的校验 -->
        <field name="user.username">
            <field-validator type="requiredstring">
                <param name="trim">true</param>
                <message>用户名不能为空</message>
            </field-validator>
            <field-validator type="regex">
                <param name="regex"><![CDATA[(w{6,16})]]></param>
                <message>用户名输入不合法,必须为长度在6~16中间的数字或字母</message>
            </field-validator>
        </field>
        
        <!-- 添加对密码的校验 -->
        <field name="user.password">
            <field-validator type="requiredstring">
                <param name="trim">true</param>
                <message>密码不能为空</message>
            </field-validator>
            <field-validator type="regex">
                <param name="regex"><![CDATA[(w{6,16})]]></param>
                <message>密码输入不合法,必须为长度在6~16之间的数字或者字母</message>
            </field-validator>
        </field>
    </validators>

     UserForm.java:

    package com.tiny.ssh.beans;
    
    public class UserForm {
    
        private String username;
        private String password;
        private int gender;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public int getGender() {
            return gender;
        }
    
        public void setGender(int gender) {
            this.gender = gender;
        }
    
    }

     UserManager.java:

    package com.tiny.ssh.service;
    
    import com.tiny.ssh.beans.UserForm;
    
    public interface UserManager {
    
        public void regUser(UserForm user);
    
    }

     UserManagerImpl.java:

    package com.tiny.ssh.serviceImp;
    
    import com.tiny.ssh.beans.UserForm;
    import com.tiny.ssh.service.UserManager;
    
    public class UserManagerImpl implements UserManager {
    
        @Override
        public void regUser(UserForm user) {
            
        }
    
    }

    Register.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!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>User Register Page</title>
    </head>
    <body>
    
        <s:form action="register">
            <s:textfield name="user.username" label="用户名"></s:textfield>
            <s:password name="user.password" label="密码"></s:password>
            <s:select list="#{'1':'男','0':'女'}" listKey="key" listValue="value"
                name="user.gender" label="性别" value="1"></s:select>
            <s:submit value="注册"></s:submit>
        </s:form>
    
    </body>
    </html>

    success.jsp 只是显示了Success一句话。

    最终的层次图如下:

     

    5.建立新的Tomcat服务器,网址输入http://localhost:8080/SSHProject即可

     (别忘了改在web.xml的欢迎界面,本例子改为Register.jsp)

     结果图:

     

     

    6.总结

     Struts是当今Java比较流行的三大框架之一,三大框架是Struts,spring,hibernate。

     Struts框架包括Struts1和Struts2,由于两个版本相差比较大,Struts1已经被淘汰,现在企业基本上全部都用Struts2,本例子使用的就是Struts2。

     该框架的作用,可以理解为将用户和访问的JSP解耦,交给Action来做,struts.xml中配置相应的映射关系,通过映射找到对应的jsp页面。

     下面的图利于理解:

     

     希望读者好好体会,以便于应用。

    参考链接:

    http://blog.csdn.net/yeohcooller/article/details/9316923

    http://bbs.csdn.net/topics/390755826

    http://blog.163.com/sean_zwx/blog/static/169032755201091595558378/

  • 相关阅读:
    如何drop有default constraint的column SQL
    Asp.net中文本框全选的实现
    [转载]找回被误删的VISTA“显示桌面”图标
    [转]深入讲解数据库中User和Schema的关系
    模拟键盘输入
    ASP.NET页面之间传递值的几种方法
    查询整个数据库中某个特定值所在的表和字段的方法
    .NET的GCHandler
    DateTime.ToString() Patterns
    VS 2008的Setup project项目添加卸载功能
  • 原文地址:https://www.cnblogs.com/TinyBobo/p/4677269.html
Copyright © 2020-2023  润新知