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框架中处理的过程大概有 一下几个步骤:
- 客户请求提交到服务器
- 请求被提交到一系列的过滤器或者拦截器,最后到达FilterDispatcher
- FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求。
- Action处理后,返回处理结果,FilterDispatcher根据struts.xml的配置信息找到对应的页面跳转。
struts2框架的业务控制器不会对用户请求进行实质的处理,用户请求最终由模型组件负责处理,业务控制器只是提供处理场合,是负责调度模型组件的调度器。
下面一个简单的例子测试:
导入几个常用的jar包,
commons-fileupload-1.2.1.jar
commons-io-1.3.2.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
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>
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>
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>
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; } } }
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