还是老话,学习MVC框架一阶段后最好的实践方法就是自己写一套增删改查
环境:jdk1.7 tomcat7 struts2
应用的jar包:
这是required包里的,自己加了个日志包。
目录:
以下贴代码:
package Action;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import Dao.StudentDao;
import Model.Student;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class studentAction extends ActionSupport implements ModelDriven
,RequestAware{
private Map
request;
private Student student;
public String add(){
StudentDao.addStudent(student);
List
list = StudentDao.getList();
request.put("list", list);
return "add";
}
public String delete(){
StudentDao.deleteStudent(student.getId());
List
list = StudentDao.getList();
request.put("list", list);
return "delete";
}
public String update(){
student = StudentDao.getStudent(student.getId());
request.put("student", student);
return "update";
}
public void setRequest(Map
request) { // TODO Auto-generated method stub this.request = request; } public Student getModel() { // TODO Auto-generated method stub student = new Student(); return student; } } //dao层 package Dao; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import Model.Student; public class StudentDao { private static Map
map; static{ map = new HashMap
(); } public StudentDao(){ } public static void addStudent(Student student){ if(map.containsKey(student.getId())) { updateStudent(student); return; } map.put(student.getId(), student); } public static void deleteStudent(String id){ if(map.containsKey(id)) map.remove(id); else return; } public static void updateStudent(Student student){ map.put(student.getId(), student); } public static Student getStudent(String id){ return map.get(id); } public static List
getList(){ List
list = new ArrayList
(); Set
> set = map.entrySet(); Iterator
> it =set.iterator(); while(it.hasNext()){ list.add(it.next().getValue()); } return list; } } //model package Model; public class Student { private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
学生信息管理
href="<%=path %>/css/index.css" rel="stylesheet">
Student_id Student_name Student_age
<%@include file="list.jsp" %>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Student_id Student_name Student_age edit delete ${student.id } ${student.name } ${student.age }
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
edit Student
href="<%=path%>/css/index.css" rel="stylesheet">
Student_id Student_name Student_age
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
/index.jsp
/student.jsp
//css
@charset "utf-8";
.all{
width:600px;
margin: 0 auto;
margin-top:200px;
}
.student_add{
width:600px;
}
.student_add table{
width:600px;
}
.student_list{
width:600px;
}
.student_list table{
width:600px;
}
.student_list table tr:HOVER{
background: #eee;
}
ps:顺便提一提jsp:include 和 @include的区别:
前者支持传参数,即动态编译,后者静态编译
两者最重要区别的就是前者是先编译后包含,后者是先包含后编译