ognl表达式ognl表达式
技术点:
模型驱动
防止表单重复提交–
数据回显
值栈
OGNL表达式
通配符、路径匹配原则、常量
数据处理的集中方式
请求数据自动封装以及类型转换
1、导包
c3p0-0.9.1.2.jar
commons-dbutils-1.6.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
mysql-connector-java-5.1.12-bin.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar
2、配置web.xml 注册struts核心过滤器
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*
3、配置struts.xml
<code class=" hljs xml"><struts> <constant name="struts.ui.theme" value=""></constant> <package name="emp" extends="struts-default"> <global-results> <result name="error">/error/error.jsp</result> </global-results> <action name="emp_*" class="cn.itcast.action.EmployeeAction" method="{1}"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="token"></cke:param>save </interceptor-ref> <result name="invalid.token" type="redirectAction">emp_list</result> <result name="list">/WEB-INF/list.jsp</result> <result name="update">/WEB-INF/update.jsp</result> </action> </package></struts></code>
4、开发Action
/** * 员工管理Action * */public class EmployeeAction extends ActionSupport implements ModelDriven{ /****封装数据****/ private Employee employee = new Employee(); public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } // 重写模型驱动方法 @Override public Employee getModel() { return employee; } /****调用的Service****/ private IEmployeeService employeeService = new EmployeeService(); /** * 1. 添加员工 */ public String save() { try { // 调用service保存 employeeService.save(employee); // 添加成功,去到列表页面 return list(); //return "addsuccess"; } catch (Exception e) { e.printStackTrace(); return ERROR; } } /** * 2. 列表显示 */ public String list() { try { // 查询全部 List listEmp = employeeService.getAll(); // 保存到request域 ActionContext.getContext().getContextMap().put("listEmp", listEmp); return "list"; } catch (Exception e) { e.printStackTrace(); return ERROR; } } /** * 3. 进入修改页面 */ public String viewUpdate() { try { // 3.1 获取当前修改的记录的主键值 int id = employee.getId(); // 3.2 service查询 Employee emp = employeeService.findById(id); // 3.3 数据回显 // a. 先得到值栈 ValueStack vs = ActionContext.getContext().getValueStack(); vs.pop(); //移除栈顶元素 vs.push(emp); // emp对象放入栈顶 return "update"; } catch (Exception e) { e.printStackTrace(); return ERROR; } } /** * 4. 修改员工 */ public String update() { try { // 调用service修改 employeeService.update(employee); return list(); } catch (Exception e) { e.printStackTrace(); return ERROR; } }}
5、开发entity
public class Employee { private int id;// INT PRIMARY KEY AUTO_INCREMENT, private String empName;// VARCHAR(20), private Date workDate;// DATE -- 入职时间 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public Date getWorkDate() { return workDate; } public void setWorkDate(Date workDate) { this.workDate = workDate; }}
6、开发dao
创建 – 创建
CREATE DATABASE hib_demo DEFAULT CHARACTER SET utf8;
– 建表
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
empName VARCHAR(20),
workDate DATE – 入职时间
)
dao接口
/** * 数据访问层接口 * * */public intece IEmployeeDao { /** * 查询全部员工 */ List getAll(); /** * 根据主键查询 */ Employee findById(int id); /** * 添加员工 */ void save(Employee emp); /** * 修改员工 */ void update(Employee emp);}
dao方法实现
public class EmployeeDao implements IEmployeeDao{ @Override public Employee findById(int id) { String sql = "select * from employee where id=?"; try { return JdbcUtils.getQuerrRunner().query(sql, new BeanHandler(Employee.class),id); } catch (SQLException e) { throw new RuntimeException(e); } } @Override public List getAll() { String sql = "select * from employee"; try { return JdbcUtils.getQuerrRunner().query(sql, new BeanListHandler(Employee.class)); } catch (SQLException e) { throw new RuntimeException(e); } } @Override public void save(Employee emp) { String sql = "insert into employee(empName,workDate) values(?,?)"; try { JdbcUtils.getQuerrRunner().update(sql, emp.getEmpName(),emp.getWorkDate()); } catch (SQLException e) { throw new RuntimeException(e); } } @Override public void update(Employee emp) { String sql = "update employee set empName=?,workDate=? where id=?"; try { JdbcUtils.getQuerrRunner().update(sql, emp.getEmpName(),emp.getWorkDate(),emp.getId()); } catch (SQLException e) { throw new RuntimeException(e); } }}
7、导入 JdbcUtils,以及配置好c3p0
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-32632-1.html
告诉美军这里不是你想来就来
赚后互相分享让更多散户得到帮助