struts2框架搭建
来源:互联网 发布:linux操作系统有什么用 编辑:程序博客网 时间:2024/05/19 02:06
个人学习总结:
开发顺序:
1、界面原型设计
2、配置struts.xml文件
3、建立数据库
4、建立Model层
5、建立Service层
6、着手开发
7、测试
1、界面原型设计
主要是根据具体业务确定所需要的界面(jsp文件),下一步根据jsp的文件名称配置struts.xml文件中的Action。
2、配置struts.xml文件
主要工作包括:
2.1 配置默认访问的Action,界面入口Action,具体界面业务的Action。
2.2 同时建立Action对应的Class类和Model层的雏形。
2.3 最后要测试完成整个界面业务的畅通,在测试的过程中逐步完善struts.xml文件的配置以及相关工作。
struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="admin" namespace="/admin" extends="struts-default"><!-- 界面入口Action --><action name="index" class="com.bbs2014.action.CategoryAction" method="list"><result>/admin/index.html</result></action><!-- 具体界面业务Action --><!-- 两result可以再进行简化,但是struts2中提供了result的返回值为INPUT的类型专门用来输入界面使用 --><action name="*_*" class="com.bbs2014.action.{1}Action" method="{2}"><result>/admin/{1}_{2}.jsp</result><result name="input">/admin/{1}_{2}.jsp</result></action></package><!-- 默认访问Action --><package name="front" namespace="/" extends="struts-default"><default-action-ref name="Category_list" /><action name="Category_list" class="com.bbs2014.action.CategoryAction" method="list"><result>/index.jsp</result></action></package></struts>
package com.bbs2014.action;import java.util.List;import com.bbs2014.model.Category;import com.opensymphony.xwork2.ActionSupport;public class CategoryAction extends ActionSupport{private List<Category> categories;public String list(){return SUCCESS;}public String add(){return SUCCESS;}public String update(){return SUCCESS;}public String delete(){return SUCCESS;}public String addInput(){return INPUT;}public String updateInput(){return INPUT;}}
Model层的雏形
package com.bbs2014.model;public class Category {}
到这一步为止,struts.xml配置结束,在测试过程中要确保界面业务畅通,再进行下一步开发。
3、建立数据库
利用SQL语句创建数据库,创建表格,同时可将SQL语句保存在工程当中。
CREATE DATABASE bbs2014;USE bbs2014;CREATE TABLE _category(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(50),description VARCHAR(200));
4、建立Model层
Model层的设计参考数据库表中的字段,定义变量并自动生成get和set方法。
package com.bbs2014.model;public class Category {private int id;private String name;private String description;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}}
5、建立Service层
5.1. 创建一个工具包封装连接数据的类
5.2. 创建一个Service包,创建Service类,
5.3. 创建各种方法,(增删改查)
5.4. 实现创建的各种方法(连上数据库,创建sql语句)
连接数据库的工具类
package com.bbs2014.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DB {public static Connection createConn(){Connection conn = null;try {Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs2014", "root", "liuyunlong");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}public static PreparedStatement prepared(Connection conn,String sql){PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}public static void close(Connection conn){if (conn == null) {return;}try {conn.close();conn = null;} catch (SQLException e) {e.printStackTrace();}}public static void close(Statement ps){if (ps == null) {return;}try {ps.close();ps = null;} catch (SQLException e) {e.printStackTrace();}}public static void close(ResultSet rs){if (rs == null) {return;}try {rs.close();rs = null;} catch (SQLException e) {e.printStackTrace();}}}
创建Service类,创建各种方法并实现
package com.bbs2014.service;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.bbs2014.model.Category;import com.bbs2014.util.DB;public class CategoryService {public void add(Category c){String sql = "insert into _category values (null,?,?)";Connection conn = DB.createConn();PreparedStatement ps = DB.prepared(conn, sql);try {ps.setString(1, c.getName());ps.setString(2, c.getDescription());ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DB.close(conn);DB.close(ps);}public List<Category> list(){String sql = "select * from _category";Connection conn = DB.createConn();PreparedStatement ps = DB.prepared(conn, sql);ResultSet rs = null;List <Category> categories = new ArrayList<Category>();try {rs = ps.executeQuery();Category c = null;while(rs.next()){c = new Category();c.setId(rs.getInt("id"));c.setName(rs.getString("name"));c.setDescription(rs.getString("description"));categories.add(c);}} catch (SQLException e) {e.printStackTrace();}DB.close(conn);DB.close(ps);DB.close(rs);return categories;}public void delete(Category c){deleteById(c.getId());}public void deleteById(int id){String sql = "delete from _category where id = ?";Connection conn = DB.createConn();PreparedStatement ps = DB.prepared(conn, sql);try {ps.setInt(1, id);ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DB.close(conn);DB.close(ps);}public void update(Category c){String sql = "update _category set name = ?, description = ? where id = ?";Connection conn = DB.createConn();PreparedStatement ps = DB.prepared(conn, sql);try {ps.setString(1, c.getName());ps.setString(2, c.getDescription());ps.setInt(3, c.getId());ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}DB.close(conn);DB.close(ps);}public Category loadById(int id){String sql = "select * from _category where id = ?";Connection conn = DB.createConn();PreparedStatement ps = DB.prepared(conn, sql);ResultSet rs = null;Category c = null;try {ps.setInt(1, id);rs = ps.executeQuery();if(rs.next()){c = new Category();c.setId(rs.getInt("id"));c.setName(rs.getString("name"));c.setDescription(rs.getString("description"));}} catch (SQLException e) {e.printStackTrace();}DB.close(conn);DB.close(ps);DB.close(rs);return c;}}
6、着手开发
该步骤主要工作就是将界面,Model和Service层联系起来。
6.1 在Action对应的类的各种方法中,调用Service类中的方法,并生成变量的get和set方法(还没理解透)
6.2 测试对数据库的操作是否正常,边测试边完善界面的设计。
其中更新功能的实现是给一个id先从数据库中查出当前的category并显示(CategoryService中的loadById方法),之后再Category_updateInput.jsp中将更新后的新的category的值赋给当前的category,在通过CategoryService中的update()方法更新数据库中的值。
CategoryAction中调用CategoryService中对应的方法
package com.bbs2014.action;import java.util.List;import com.bbs2014.model.Category;import com.bbs2014.service.CategoryService;import com.opensymphony.xwork2.ActionSupport;public class CategoryAction extends ActionSupport{private List<Category> categories;private Category category;private int id;CategoryService categoryService = new CategoryService();public String list(){categories = categoryService.list();//给categories赋值return SUCCESS;}public String add(){categoryService.add(category);return SUCCESS;}public String update(){categoryService.update(category);return SUCCESS;}public String delete(){categoryService.deleteById(id);return SUCCESS;}public String addInput(){return INPUT;}public String updateInput(){category = categoryService.loadById(id);return INPUT;}public List<Category> getCategories() {return categories;}public void setCategories(List<Category> categories) {this.categories = categories;}public Category getCategory() {return category;}public void setCategory(Category category) {this.category = category;}public int getId() {return id;}public void setId(int id) {this.id = id;}public CategoryService getCategoryService() {return categoryService;}public void setCategoryService(CategoryService categoryService) {this.categoryService = categoryService;}}
<body> Category_list <br><a href="admin/Category_addInput">添加Category</a><hr/><s:iterator value="categories" var="c">name=<s:property value="#c.name"/> ,description=<s:property value="#c.description"/> <a href="admin/Category_delete?id=<s:property value="#c.id"/>">删除Category</a><a href="admin/Category_updateInput?id=<s:property value="#c.id"/>">更新Category</a><br/></s:iterator><s:debug></s:debug> </body>Category_addInput.jsp
<body> <form action="admin/Category_add" method="post"> name:<input name="category.name" /> description:<textarea name="category.description"></textarea> <input type="submit" value="add" /> </form> </body>Category_updateInput.jsp
<body> <form action="admin/Category_update" method="post"> <input type="hidden" name="category.id" value="<s:property value="category.id"/>"> name:<input name="category.name" value="<s:property value="category.name"/>" /> description:<textarea name="category.description"><s:property value="category.description"/></textarea> <input type="submit" value="update" /> </form> </body>
最后在界面上测试所有功能是否都能实现(增删改查)
- struts2搭建框架
- struts2搭建框架
- 如何搭建Struts2框架
- 手动搭建Struts2框架
- 搭建Struts2开发框架
- struts2框架搭建
- struts2-搭建开发框架
- Struts2框架的搭建
- 搭建Struts2框架
- Struts2框架搭建
- Struts2框架搭建
- struts2框架搭建
- Struts2+Spring框架搭建
- Struts2框架搭建
- struts2框架搭建
- Struts2.5框架搭建
- HelloWorld_Struts2-Struts2框架搭建
- 搭建struts2框架
- Clone Graph
- 转录组测序分析中cufflinks的使用及问题
- 从web工程中下载文件到本地硬盘
- 读取文件夹下的所有文件
- Android.mk详解
- struts2框架搭建
- MDS ResultItem 的保存和读取
- STL源码-iterator traits编程技法(续)
- Xcode 遇到有些库文件被修改,之类的错误。
- 阻塞,非阻塞,异步 ,同步
- 获取tomcat下java项目根目录路径
- js在获取图片的src是相对路径
- 资讯_Windows7旗舰版官方原装镜像iso文件下载;
- Android 使用动态加载框架DL进行插件化开发