首页 > 代码库 > struts2入门(1)

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

 

struts2入门(1)