环境:myeclipse2013+tomcat7+strut2
struts是MVC的一种实现,他使用action来进行前台与后台数据库的交互,这里以添加数据为例:
(1)首先新建web项目并为项目安装struts:(安装好之后就发现src目录下多了一个名为struts的xml文件,并且struts相关的包已经成功导入,struct.xml是非常重要的配置文件,下面会说)
(2)编写前台代码:
<html> <head> <title>bookAdd.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <center> <br><br>添加书籍信息<br> <form name="f1" id="f1" action="action/bookAdd.action" method="post"> <table border="0"> <tr> <td>id:</td> <td><input type="text" name="id" id="ID"></td> </tr> <tr> <td>书名:</td> <td><input type="text" name="name" id="Name"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value=" 确定 " ></td> </tr> </table> </form> </center> </body> </html>
(3)编写action代码:(注意action中的属性要与前台html代码中的标签的name属性名称相同才能实现传值,action中通过属性的get方法得到传过来的值,通过execute()方法对数据进行操作)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class bookAdd extends ActionSupport{ String name; String id; String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public String execute() throws Exception { // 添加数据 Connection con = null; Statement stmt = null; String db_url = "jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=utf8"; String db_user = "root"; String db_pass = "123456789"; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(db_url, db_user, db_pass); String strSql = "insert into book values('" + getId() + "','" + getName() + "')"; stmt = con.createStatement(); stmt.execute(strSql); } catch (Exception e) { setMsg("id重复!"); return "Error"; } return "Success"; } }
(4)在strut.xml中对action进行配置(在struts标签下添加如下代码):
<package name="default" namespace="/action" extends="struts-default"> <action name="bookAdd" class="crud.bookAdd"> <result name="Success">../bookList.jsp</result> <result name="Error">../Error.jsp</result> </action> </package>
其中package标签的namespace属性决定了我们对action的访问路径,这里的namespace="/action",所以我们在通过表单访问的时候,表单的action属性就应该设置为:
action="action/bookAdd.action"
action的name属性应该与申请访问该action的jsp文件或者html文件名称相同,class属性是action的路径.action的名称。
result标签决定action结束之后跳转的页面,其中的name属性对应action的返回值。
(5)上面说的是一种前台界面向action传值的方法,下面是通过超链接的方式向action传值,原理是一样的,传值方法如下:
<a href="action/bookDelete.action?id=<%=rs.getString("id")%>">通过超链接的方式给action传值</a> </td>
这样的方法同样,传递参数的名称‘id’对应着action的属性的名称。