zoukankan      html  css  js  c++  java
  • struts2入门(1)

    struts2 是一种基于MVC模式的开发框架。采用struts可以简化MVC设计模式的Web应用开发,很好的实现代码重用。

    MVC模式,Model:Model部分包括业务逻辑层和数据访问层,在java Web中业务逻辑一般由JavaBean或者EJB担任,Model部分就是业务流程或者状态的处理以及业务规则的制定,业务模型的设计是MVC最主要的组件。View:View部分一般由JSP,HTML以及其他试图技术构建也可以使用XHTML,XML,Applet,Javascript等,Control:Control部分由Servlet组成,当用户请求从V部分过来时,C调用M在控制器中进行业务的处理。

    struts2的工作原理:

    一个客户请求在struts2框架中处理的过程大概有 一下几个步骤:

    1. 客户请求提交到服务器
    2. 请求被提交到一系列的过滤器或者拦截器,最后到达FilterDispatcher
    3. FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求。
    4. Action处理后,返回处理结果,FilterDispatcher根据struts.xml的配置信息找到对应的页面跳转。

    struts2框架的业务控制器不会对用户请求进行实质的处理,用户请求最终由模型组件负责处理,业务控制器只是提供处理场合,是负责调度模型组件的调度器。

    下面一个简单的例子测试:

    导入几个常用的jar包,

    commons-fileupload-1.2.1.jar 
    commons-io-1.3.2.jar 
    commons-logging-1.0.4.jar
    freemarker-2.3.13.jar   
    ognl-2.6.11.jar 
    struts2-core-2.1.6.jar 
    xwork-2.2.1.jar
    文件结构如下:
    web.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_9" version="2.4" 
             xmlns="http://java.sun.com/xml/ns/j2ee" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <filter>
            <!--struts2的核心控制器名称-->
            <filter-name>struts2</filter-name>
            <!--struts2的核心控制器类-->
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <!--struts2的核心控制器名称-->
            <filter-name>struts2</filter-name>
            <!--拦截所有URL请求-->
            <url-pattern>/*</url-pattern>
        </filter-mapping>    
    </web-app>
    View Code

    login.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>
    <h1>Hello,welcome to here!!</h1>
    <a href="login.jsp">Login</a>
    </body>
    </html>
    View Code

    success.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
        <%
        String path=request.getContextPath();
        String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        %>
    <!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><%=basePath %></title>
    </head>
    <body>
    <h1>Success!!!</h1>
    </body>
    </html>
    View Code

    LoginBean.java

    package mybean;
    
    public class LoginBean {
    private String userName;            //此处的userName名称必须和form定义的input 类型的 id=“userName"一样负责不能自动传值
    private String passWord;            //会报pointerNull错误
    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 boolean login(String userName,String passWord) {
        boolean b=false;
        if(userName.equals("QQ")&&passWord.equals("123")){
            b=true;
            return b; 
        }
        else 
        {
            b=false;
            return b;
        }
    }
    }
    View Code

    LoginAction.java

    package action;
    import mybean.LoginBean;
    public class LoginAction {
        private String userName;
        private String passWord;
        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 String execute() throws  Exception {
                LoginBean lb=new LoginBean();
            if(lb.login(userName, passWord)){
                return "success";
            }
            else {
                return "error";
            }
        }
    }
    PS:开发环境Win7+Eclipse Luna
  • 相关阅读:
    == 和equals方法
    ObjectInputStream 与ObjectOutputStream
    IOS基础:ObjectiveC 数组处理
    学习笔记:自定义方法的两种实现方式
    DatePicker 获取时间的时区问题
    IOS基础:tableview中cell
    IOS基础:窗口切换的几种方法
    IOS基础:ObjectiveC 字符串处理
    使用 Notifications
    学习笔记:Tab Bar 控件使用详解
  • 原文地址:https://www.cnblogs.com/andy-2014/p/4117505.html
Copyright © 2011-2022 走看看