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

 

posted @ 2014-11-23 22:13  止水的水  阅读(386)  评论(0编辑  收藏  举报