注:之前的一篇博客【JDBC】查询Student表是用纯JSP实现的,现在将Struts2引入其中。Eclipse、MySQL、Struts2。
简介
Struts1是最早的基于MVC模式的轻量级Web框架,Struts2是Struts1的下一代产品,解决了Struts1存在的一些问题。Struts2是在Struts1和WebWork技术的基础上合并出来的一个全新的MVC框架,其设计思想与Struts1有很大的差别。
实例
1、创建Web项目
2、添加Struts2相应jar包
Struts2的jar包可以从官网(http://struts.apache.org/)下载,lib目录下包括Struts2的所有jar包。通常在项目的WEB-INF/lib目录下添加几个常用的jar包即可,本实例中用到的jar包可单击下载。
3、配置Struts2的核心过滤器
在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>
4、定义处理用户请求的Action类
这里添加一个SelectAction类,具有一个sno属性,具体代码如下:
public class SelectAction extends ActionSupport{
String url = "jdbc:mysql://127.0.0.1:3306/dbname";
private String sno;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String execute() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
//与数据库建立连接
Connection conn = DriverManager.getConnection(url,"root","jujianfei");
//创建Statement对象,用于执行SQL语句
Statement sm = conn.createStatement();
//执行一个SQL Select语句
ResultSet rs = sm.executeQuery("select Sno from student where Sname = '王小波'");
if(rs.next()){
this.setSno(rs.getString("Sno"));
return SUCCESS;
}
else{
return ERROR;
}
}
}
5、编写Struts2的配置文件
在src目录下新建一个名称为struts.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定Struts2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- Struts2配置文件的根元素 -->
<struts>
<!-- Struts2的Action必须放在指定的包空间下定义 -->
<package name="hello" namespace = "/" extends ="struts-default" >
<!-- 定义action,该action对应的类为cn.jujianfei.action.SelectAction.java -->
<action name = "select" class ="cn.jujianfei.action.SelectAction">
<!-- 定义处理结果和视图资源之间的映射关系 -->
<result name="success" >/success.jsp</result>
</action>
</package>
</struts>
6、创建视图文件
在WebContent目录下创建一个index.jsp页面,在其中编写一个超链接,用于访问Action对象,此链接指向的地址为select.action,核心代码如下:
<body>
<h1>Welcome to struts2!</h1>
<a href="${pageContext.request.contextPath}/select.action" >select</a>
</body>
最后在WebContent下再创建一个名为success.jsp的文件,作为Action对象处理成功后返回的页面,核心代码如下:
<body>
//用EL表达式获取从数据库读出的学号
Sno为:${sno}
</body>
结语
作为一个优秀的开源的MVC框架,其重点实现了两部分:业务逻辑控制器和视图页面。控制器主要有Action来提供支持,而视图则是由大量的标签来提供支持。Struts2的拦截器机制是其核心组成部分,数据校验、转换器、国际化等功能都可由拦截器来实现。另外,为了方便统一管理数据,Struts2引入了值栈的概念,使用OGNL表达式可简化数据的访问操作,方便了前后台数据的交互。