Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2官网:https://struts.apache.org/(今天所用的Struts2包为:struts-2.3.34-all)
今天尝试搭建了Struts2环境并且做了一个连接MySQL用户登陆的Demo。具体步骤:
1.项目的创建及jar包的导入:
新建Dynamic Web project,打开struts-2.3.34包下的apps文件夹(官网demo),打开第一个struts2-blank压缩包,复制WEB-INF/lib下的所有jar包导入到刚建好的项目中WEB-INF/lib下,导入mysql-connector包。
2.配置两个框架所需的两个xml(struts.xml、web.xml)
(1)struts.xml位置建在src下,引入约束(去官方demo中找)
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
(2)web.xml主要配置过滤器,用来拦截请求:
<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>
3.数据库、实体类、数据库连接工具类、CRUD类
略
4.创建LoginAction:
action通过execute()方法处理请求
5.编写JSP页面(login.jsp、success.jsp、error.jsp)
略(login.jsp中form表单提交action为“login”与下面struts.xml中的“action name“一致)
6.在struts.xml文件中配置LoginAction:
<package name="demo" extends="struts-default" namespace="/">
<action name="login" class="com.action.LoginAction">
<result name="yes">/success.jsp</result>
<result name="no">/error.jsp</result>
</action>
</package>
7.运行项目,进入login.jsp输入MySQL中已有的记录,则进入success.jsp,否则跳转至error.jsp。测试成功。
这样,就完成了一个简单的用户登陆校验demo,根据表单提交的用户名和密码,查询数据库,根据查询结果跳转不同页面,整个流程简单清晰,适合初学Struts2框架的使用。总结下struts2工作流程:
1、客户端浏览器发出HTTP请求
2、根据web.xml配置,该请求被过滤器拦截
3、根据struts.xml配置,找到需要调用的Action类和方法, 并将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器。