首页 > 学院 > 开发设计 > 正文

Struts2入门案例

2019-11-08 02:05:23
字体:
来源:转载
供稿:网友

一、Struts2是什么? Struts2是一个基于MVC设计模式的Web应用框架,相当于一个Servlet,Struts2作为一个Controller来建立模型与视图的数据交互。Struts2以WebWork为核心,采用拦截器的机制来处理用户请求。业务逻辑控制器和ServletAPI完全脱离。

二、Struts2的使用? 以struts-2.3.14为例: 1、下载Struts2的jar包。新建一个web项目并将需要的jar包导入。不同版本要的包不同,不知道导哪些包的时候,一个保险方法是将struts/apps文件夹下的struts2-blank.war包打开。将里面的WEB-INF/lib下的包导入自己的项目。

2、Struts2配置,配置web.xml文件。

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Struts2Demo</display-name> <!-- Struts2的过滤器,请求都被映射到Struts2上 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPRepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

3、配置strute.xml文件,配置Action。(可以放在src下,也可以放在WEB-INF/classes下面)

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置文件中,包名不重复即可。自己创建的包最好都继承struts-default包,该包提供了绝大多数的功能--> <package name="struts2" extends="struts-default"> <!-- action元素与表单对应 --> <action name="login" class="fang.LoginAction"> <result name="success">/welcome.jsp</result><!-- result为action处理结果 --> <result name="error">/error.jsp</result> </action> </package> </struts>

4、写一个对应的Action,继承自ActionSupport。

import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; private String name; private String passwd; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } @Override public String execute() { if ("admin".equals(name) && "admin".equals(passwd)) { return SUCCESS; } else return ERROR; } }

5、对应的JSP文件 (1)login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title><s:text name="登陆页面"/></title> </head> <body> <s:form action="login"><!--action的值对应于struts.xml文件中的<action ...> 中的name属性--> <s:label value="请登录"/><!-- 文字标签--> <s:textfield name="name" key="用户名"/><!--文本框--> <s:textfield name="passwd" key="密码"/> <s:submit value="登录"/> </s:form> </body> </html>

(2)welcom.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title><s:text name="欢迎页面"/> </title> </head> <body> 欢迎您,<s:property value="name"/><!--显示Action中的account属性--> </body> </html>

(3)error.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title><s:text name="登录失败页面"/> </title> </head> <body> <s:text name="登录失败。。。"/> </body> </html>

执行:http://localhost:8080/Struts2Demo/login.jsp

三、几点说明 1、Struts2的工作流程: Struts2抛弃了request、response等Servle API。在调用Action的执行方法(如:execute)前,struts2 的会从request中获取参数,并通过setter方法设置到Action属性。

访问到login.jsp后,找到表单要提交到的action:;Struts2截获所有的请求; 通过action的值,在struts.xml配置文件中找到对应的Action。生成一个Action实例,并并将提交的数据设置到该实例中;调用execute()主方法; 根据执行完对应的Action后返回结果,struts.xml配置文件中/welcome.jsp /error.jsp 展现对应的jsp页面。

2、Struts2中每个Action有多个实例(Struts1中所有的Action只有一个实例。)每处理一次请求生成一个实例,处理完即销毁。因此Struts2是线程安全的。

3:Action: (1)自定义Action一般直接继承自ActionSupport类,定义变量,重写execute()方法。变量的值被Struts2通过setter方法自动复制,execute直接使用即可。 execute的执行结果返回值配置在中。 (2)事实上任何的POJO都可以作为Action,只要该Action有public String execute()方法。 这样的好处是不与Struts2发生耦合,代码不依赖Struts2类库。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表