种子软件项目管理系统实战

上篇博客的基础上进行项目的实战。

全部源码见下述链接地址:

链接:https://pan.baidu.com/s/1-g6mHbs2kkZhXf9-DeSHDw 提取码:80hf 复制这段内容后打开百度网盘手机App,操作更方便哦

 

方法实现

src目录如下:

1、实体类

“com.xmx.oa.model.entity” --> “Person.java”,内容详见jsp连接mysql博客“jsp搭建”中第7点。

package com.xmx.oa.model.entity;

public class Person {
int id;
String name;
String sex;
int age;
String phone;
int currentpage;
int size;

public Person(String name, String sex, String phone) {
	super();
	this.name = name;
	this.sex = sex;
	this.phone = phone;
}
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 getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
public int getAge() {
	return age;
}
public void setAge(int age) {
	this.age = age;
}
public String getPhone() {
	return phone;
}
public void setPhone(String phone) {
	this.phone = phone;
}
public Person(int id, String name, String sex, int age, String phone) {
	super();
	this.id = id;
	this.name = name;
	this.sex = sex;
	this.age = age;
	this.phone = phone;
}

public Person(int currentpage, int size) {
	super();
	this.currentpage = currentpage;
	this.size = size;
}
public Person() {
	super();
	// TODO Auto-generated constructor stub
}
@Override
public String toString() {
	return "Person [id=" + id + ", name=" + name + ", sex=" + sex + ", age="
			+ age + ", phone=" + phone + "]";
}

}

2、工具类

过滤器“com.xmx.oa.filter” --> “PersonFilter.java”内容详见小型客户管理系统的开发

package com.xmx.oa.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class PersonFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("我是过滤器,我骄傲!");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		// 把请求传回过滤链
		chain.doFilter(request,response);

	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}

“com.xmx.oa.model.utils” --> “MybatisUtils.java”,内容详见Mybatis使用博客第4点。

package com.xmx.oa.model.utils;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtils {
	//定义工厂
	public static SqlSessionFactory sqlSessionfactory;
	
	static{
		try {
			//与配置文件建立连接
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
			//生产工厂
			sqlSessionfactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static SqlSession getSqlSession(){
		return sqlSessionfactory.openSession();
	}
	
	public void closeSqlSession(SqlSession sqlSession){
		if(sqlSession!=null){
			sqlSession.close();
		}
	}
}

“mybatis-config.xml”,内容详见Mybatis使用博客第2、3点。

<?xml version="1.0"?>
<!DOCTYPE configuration PUBLIC
"-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 默认与default的数据库建立连接 -->
<environments default="cs">
<!-- id为要连接的数据库,可同时配置多个 -->
<environment id="cs">
<!-- 事务管理,连接方式:JDBC/MANAGED -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源:POOLED/UNPOOLED -->
<dataSource type="POOLED">
<!-- 在缓冲池中配置与数据库连接的参数 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/oa" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<!-- 配置映射信息 -->
<mappers>
<mapper resource="com/xmx/oa/model/service/IPersonService-mapper.xml"></mapper>
</mappers>
</configuration>

3、控制层

“com.xmx.oa.controller” --> “PersonServlet.java”

package com.xmx.oa.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xmx.oa.model.entity.Person;
import com.xmx.oa.model.service.IPersonService;
import com.xmx.oa.service.impl.PersonServiceImpl;

public class PersonServlet extends HttpServlet {
	IPersonService service = new PersonServiceImpl();
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		System.out.println("1");
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//		System.out.println("进来了?");
		String method = request.getParameter("method");
		System.out.println(method);
		if(method.equals("add")){
			this.doAdd(request, response);
		}else if(method.equals("del")){
			this.doDel(request, response);
		}else if(method.equals("findid")){
			this.doFindId(request, response);
		}else if(method.equals("findname")){
			this.doFindName(request, response);
		}else if(method.equals("update")){
			this.doUpdate(request, response);
		}else if(method.equals("super")){
			this.doSuperFind(request, response);
		}else if(method.equals("delmul")){
			this.doDelMul(request, response);
		}else{
			this.doPageFind(request, response);
		}
	}
	
	private void doPageFind(HttpServletRequest request,HttpServletResponse response)
			 throws ServletException, IOException {
		int currentpage = 1;					//默认为第一页
		int size = 5;							//每页显示的记录数
		int count = service.findCountPage();	//页数总数
		int page = 0;
//		System.out.println("数据总数为"+count);
		//获取传过来的当前页面
		String cpage = request.getParameter("currentpage");
//		System.out.println("cpage="+cpage);
		if(cpage!=null && !cpage.equals("")){
			currentpage = Integer.parseInt(cpage);
		}
		//获取要转到的页面,放到currentpage里
		String turnTo = request.getParameter("turnTo");
		if(turnTo!=null && !turnTo.equals("")){
			currentpage = Integer.parseInt(turnTo);
		}
		//1.调用业务逻辑层的分页方法
		List<Person> list = service.findByPage((currentpage-1)*size, size);
		//2.保存到request中
		request.setAttribute("list", list);
		request.setAttribute("currentpage", currentpage);	//保存当前页码
		//保存总页数,要判断一下
		if(count%size==0){
			page = count/size;
		}else{
			page = count/size +1;
		}
		request.setAttribute("page", page);		
		//3.跳转到显示页面
		request.getRequestDispatcher("files/listPerson.jsp").forward(request, response);
		
	}

	public void doAdd(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		//1.提取参数
		int id = Integer.parseInt(request.getParameter("id"));
		String name = request.getParameter("name");
		String sex = request.getParameter("sex");
		int age = Integer.parseInt(request.getParameter("age"));
		String phone = request.getParameter("phone");
//		System.out.println(id);
		//2.封装成对象
		Person p = new Person(id, name, sex, age, phone);
		//3.调用业务逻辑层(放到外面)
//		IPersonService service = new PersonServiceImpl();
		int i = service.addPerson(p);
		System.out.println("i="+i);
		//4.跳转到显示页面
		if(i>0){
			this.doFind(request, response);
		}else{
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}
	}
	
	public void doDel(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.取得参数
		int id = Integer.parseInt(request.getParameter("cid"));
		//2.调用业务逻辑层的删除方法
		int i = service.deletePerson(id);
		//3.跳转到显示页面
		if(i>0){
			this.doPageFind(request, response);
		}else{
			System.out.println("删除失败!");
		}
	}
	
	public void doDelMul(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.取得参数
		String ids[] = request.getParameterValues("id");
		
		//把字符串数组ids里的数都放到整形数组id中
		int t = 0;
		int id[] = new int[ids.length];
		for(String i:ids){
			id[t] = Integer.parseInt(i);
			t++;
		}
		//2.调用业务逻辑层的批量删除方法
		int i = service.deleteMulPerson(id);
		//3.跳转到显示页面
		if(i>0){
			this.doPageFind(request, response);
		}else{
			System.out.println("删除失败!");
		}
	}
	
	public void doFindId(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.取得参数
		int id = Integer.parseInt(request.getParameter("cid"));
		//2.调用业务逻辑层中的按id查询方法
		Person p = service.findById(id);
		//3.保存对象
		request.setAttribute("p1", p);
		//4.跳转到update.jsp
		request.getRequestDispatcher("files/editPerson.jsp").forward(request, response);
	}
	
	public void doFindName(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.取得参数
		String name = request.getParameter("username");
		//2.调用业务逻辑层中的按id查询方法
		List<Person> list = service.findVaguePerson(name);
		for(Person i:list){
			System.out.println(i.toString());
		}
		//3.保存对象
		request.setAttribute("list", list);
		//4.跳转到update.jsp
		request.getRequestDispatcher("files/listPerson.jsp").forward(request, response);
	}
	
	public void doUpdate(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.提取参数
		int id = Integer.parseInt(request.getParameter("id"));
		String name = request.getParameter("name");
		String sex = request.getParameter("sex");
		int age = Integer.parseInt(request.getParameter("age"));
		String phone = request.getParameter("phone");
		//2.封装成对象
		Person p = new Person(id, name, sex, age, phone);
		//3.调用业务逻辑层(放到外面)
//		IPersonService service = new PersonServiceImpl();
		int i = service.updatePerson(p);
//		System.out.println(i);
		//4.跳转到显示页面
		if(i>0){
			System.out.println("更新成功!");
			this.doPageFind(request, response);
		}else{
			System.out.println("更新失败!");
		}
	}
	
	//查询所有客户信息
	public void doFind(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.调用业务逻辑层的查询方法
		List<Person> list = service.findAllPerson();
		//2.保存到request中
		request.setAttribute("list", list);
		//3.跳转到显示页面
		request.getRequestDispatcher("files/listPerson.jsp").forward(request, response);
	}
	
	public void doSuperFind(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.提取参数
		String name = request.getParameter("name");
		String sex = request.getParameter("sex");
		String phone = request.getParameter("phone");
		//2.封装成对象
		Person p = new Person(name, sex, phone);
		//3.调用业务逻辑层的高级搜索方法
		List<Person> list = service.superQuery(p);
		//4.保存到request中
		request.setAttribute("list", list);
		//5.跳转到显示页面
		request.getRequestDispatcher("files/listPerson.jsp").forward(request, response);
	}

	public void init() throws ServletException {
		// Put your code here
	}

}

4、服务层

“com.xmx.oa.model.service” --> “IPersonService.java”,内容理解详见Mybatis使用博客。

package com.xmx.oa.model.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.xmx.oa.model.entity.Person;

public interface IPersonService {
	
	public int addPerson(Person p);
	public int deletePerson(int id);
	public int deleteMulPerson(@Param("id") int id[]);
	public int updatePerson(Person p);
	public List<Person> findAllPerson();
	public List<Person> superQuery(Person p);
	public Person findById(int id);
	public List<Person> findVaguePerson(String name);
	public int findCountPage();
	public List<Person> findByPage(int currentpage,int size);

}

“com.xmx.oa.model.service” --> “IPersonService-mapper.xml”,内容理解详见Mybatis使用博客。

<?xml version="1.0"?>
<!DOCTYPE mapper PUBLIC
 "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="com.xmx.oa.model.service.IPersonService">
 <insert id="addPerson" parameterType="com.xmx.oa.model.entity.Person">
 insert  into users values (#{id},#{name},#{sex},#{age},#{phone})
 </insert>
 <delete id="deletePerson" parameterType="int">
 delete from users where id=#{id}
 </delete>
 <delete id="deleteMulPerson">
 delete from users where id in
 <foreach collection="id" item="v" open="(" close=")" separator=",">
 #{v}
 </foreach>
 </delete>
 <update id="updatePerson" parameterType="com.xmx.oa.model.entity.Person">
 update users set name=#{name}, sex=#{sex}, age=#{age}, phone=#{phone} where id=#{id}
 </update>
 <select id="findAllPerson" resultType="com.xmx.oa.model.entity.Person">
 select * from users
 </select>
 <select id="findById"
 resultType="com.xmx.oa.model.entity.Person" parameterType="int">
 select * from users where id=#{id}
 </select>
 <select id="findVaguePerson" resultType="com.xmx.oa.model.entity.Person" 
 parameterType="String">
 select * from users where name like concat('%',#{name},'%')
 </select>
 <select id="findByPage" resultType="com.xmx.oa.model.entity.Person">
 select * from users limit #{0}, #{1}
 </select>
 <select id="findCountPage" resultType="int">
 select count(*) from users 
 </select>
 <select id="superQuery" resultType="com.xmx.oa.model.entity.Person"
 parameterType="com.xmx.oa.model.entity.Person">
 select * from users
 <where> 
    <if test="name!=null and name!=''">
         name like concat('%',#{name},'%')
    </if> 
    <if test="sex!=null and sex!=''">
        and sex like concat('%',#{sex},'%')
    </if>
    <if test="phone!=null and phone!=''">
        and phone like concat('%',#{name},'%')
    </if>
  </where>
 </select>
 </mapper>

其中,where 元素只会在至少有一个子元素的条件返回 SQL子句的情况下才去插入“WHERE”子句。

而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。

5、接口层

“com.xmx.oa.service.impl” --> “PersonServiceImpl.java”

package com.xmx.oa.service.impl;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;

import com.xmx.oa.model.entity.Person;
import com.xmx.oa.model.service.IPersonService;
import com.xmx.oa.model.utils.MybatisUtils;

public class PersonServiceImpl implements IPersonService {
	//1.获取sqlSession对象
	SqlSession sqlSession = MybatisUtils.getSqlSession();
	//2.获取需要操作的接口实例
	//通过解析接口对应的映射文件,根据映射文件中的配置来获取接口实例
	IPersonService service = sqlSession.getMapper(IPersonService.class);
	@Override
	public int addPerson(Person p) {
		int i = service.addPerson(p);
		sqlSession.commit();
//		sqlSession.close();
		return i;
	}

	@Override
	public int deletePerson(int id) {
		int i = service.deletePerson(id);
		sqlSession.commit();
//		sqlSession.close();
		return i;
	}

	@Override
	public int deleteMulPerson(@Param("id")int[] id) {
		int i = service.deleteMulPerson(id);
		sqlSession.commit();
//		sqlSession.close();
		return i;
	}

	@Override
	public int updatePerson(Person p) {
		int i = service.updatePerson(p);
		sqlSession.commit();
//		sqlSession.close();
		return i;
	}

	@Override
	public List<Person> findAllPerson() {
		// TODO Auto-generated method stub
		return service.findAllPerson();
	}

	@Override
	public Person findById(int id) {
		// TODO Auto-generated method stub
		return service.findById(id);
	}

	@Override
	public List<Person> findVaguePerson(String name) {
		// TODO Auto-generated method stub
		return service.findVaguePerson(name);
	}

	@Override
	public List<Person> findByPage(int currentpage, int size) {
		// TODO Auto-generated method stub
		return service.findByPage(currentpage, size);
	}

	@Override
	public int findCountPage() {
		// TODO Auto-generated method stub
		return service.findCountPage();
	}

	@Override
	public List<Person> superQuery(Person p) {
		// TODO Auto-generated method stub
		return service.superQuery(p);
	}

}

其作用为封装服务层的方法,类比上篇博客,在测试方法中可以体会到其简单的特性。

6、测试层

“com.xmx.oa.test” --> “TestOa.java”

package com.xmx.oa.test;

import java.util.List;

import org.junit.Test;

import com.xmx.oa.model.entity.Person;
import com.xmx.oa.model.service.IPersonService;
import com.xmx.oa.service.impl.PersonServiceImpl;

public class TestOa {
	IPersonService service = new PersonServiceImpl();
	
	@Test
	//添加
	public void test1(){
		Person p = new Person(9,"梁山伯","男",20,"1231413");
		int i = service.addPerson(p);
		System.out.println(i);
	}
	
	@Test
	//删除
	public void test2(){
		int i = service.deletePerson(2);
		System.out.println(i);
	}
	
	@Test
	//批量删除
	public void testDel(){
		int id[] = {2,3};
		int i = service.deleteMulPerson(id);
		System.out.println(i);
	}
	
	@Test
	//修改
	public void test3(){
		Person p = new Person(7,"哈哈","男",20,"1231413");
		int i = service.updatePerson(p);
		System.out.println(i);
		
	}
	
	@Test
	//查询所有
	public void test4(){
		List<Person>list = service.findAllPerson();
		for(Person p:list){
			System.out.println(p.toString());
		}
		
	}
	
	@Test
	//按照id查询
	public void test5(){
		Person p = new Person();
		p = service.findById(4);
		System.out.println(p);
	}
	
	@Test
	//按名字模糊查询
	public void test6(){
		List<Person>list = service.findVaguePerson("李");
		for(Person p:list){
			System.out.println(p.toString());
		}
	}
	
	@Test
	//高级搜索
	public void testSuperFind(){
		Person p = new Person("山","男","");
		List<Person>list = service.superQuery(p);
		for(Person p1:list){
			System.out.println(p1.toString());
		}
	}
	
	@Test
	//分页查询
	public void test7(){
		List<Person>list = service.findByPage(2, 3);
		for(Person p:list){
			System.out.println(p.toString());
		}
		
	}
	
	@Test
	//计算总条数
	public void test8(){
		int i = service.findCountPage();
		System.out.println(i);
	}
}

 

前端页面交互

注:以下仅显示设计交互的部分代码。

其中,index.jsp在WebRoot目录下,其余页面均在与之同级的files目录下。

1、index.jsp

<frameset rows="59,*" cols="*" frameborder="no" border="0" framespacing="0">
  <frame src="files/top.html" name="topFrame" scrolling="No" noresize="noresize" 
  id="topFrame" title="topFrame" />
  <frameset cols="213,*" frameborder="no" border="0" framespacing="0">
    <frame src="files/left.jsp" name="leftFrame" scrolling="No" noresize="noresize" 
    id="leftFrame" title="leftFrame" />
    <frame src="files/mainfra.html" name="mainFrame" id="mainFrame" title="mainFrame" />
  </frameset>
</frameset>
<noframes>

该html代码在<head></head>与<body></body>之间。

2、left.jsp

<tr>
  <td width="9%" height="20" >
    <img id="xiaotu20" src="../images/ico06.gif" width="8" height="12" /></td>
  <td width="91%"><a href="addPerson.jsp" target="mainFrame"
  class="left-font03" onClick="tupian('20');">添加人员信息</a></td>
</tr>
<tr>
  <td width="9%" height="21" >
    <img id="xiaotu21" src="../images/ico06.gif" width="8" height="12" /></td>
  <td width="91%"><a href="/test0821/PersonServlet?method=a"
  method="get" target="mainFrame" class="left-font03" >人员信息查看</a></td>
</tr>

3、addPerson.jsp

<body class="ContentBody">
  <form action="/test0821/PersonServlet" method="post" name="fom" id="fom">
  <input type="hidden" name="method" value="add" />
	<div class="MainDiv">
	  <table width="99%" border="0" cellpadding="0" cellspacing="0" class="CContent">
  	  <tr><th class="tablestyle_title" >人员添加页面</th></tr>
  	  <tr><td class="CPanel">
		<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
		  <tr><td align="left">
			<input type="button" name="Submit" value="保存" class="button"
            onclick="alert('保存成功!');"/> 
			<input type="button" name="Submit2" value="返回" class="button"     
            onclick="window.history.go(-1);"/>
		  </td></tr>
		  <tr><td width="100%">
			<fieldset style="height:100%;">
			  <legend>添加人员</legend>
				<table border="0" cellpadding="2" cellspacing="1" style="width:100%">
			      <tr><td nowrap align="right" width="13%">编号:</td>
					<td width="41%"><input type="text" name="id" class="text" 
                    style="width:250px"  size="40" />
				    <span class="red"> *</span></td>
					<td align="right" width="19%">姓名:</td>
					<td width="27%"><input name="name" id="Input22" class="text" 
                    style="width:154px" /></td>
				  </tr>
				  <tr><td nowrap align="right">性别:</td>
					<td><input type="radio" name="sex" value="男" />男
                        <input type="radio" name="sex" value="女" />女</td>
					<td align="right">年龄:</td>
				    <td><input name="age" id="Input" class="text" style="width:154px" />
                  </td></tr>
				  <tr><td nowrap align="right">电话:</td>
					  <td><input name="phone" id="Input" class="text"
                      style="width:154px" /></td>
				  </tr>
				</table>
			 	<br />
			  </fieldset></td></tr></table></td></tr>
		<tr>
			<td colspan="2" align="center" height="50px">
			<input type="button" name="Submit" value="保存" class="button" 
            onclick="link();"/> 
			<input type="button" name="Submit2" value="返回" class="button" 
            onclick="window.history.go(-1);"/></TD>
		</tr>
	  </table>

	</div>
  </form>
</body>

4、listPerson.jsp

<SCRIPT language=JavaScript>
function selectAll(){
	var obj = document.fom.elements;
	for (var i=0;i<obj.length;i++){
		if (obj[i].name == "delid"){
			obj[i].checked = true;
		}
	}
}

function unselectAll(){
	var obj = document.fom.elements;
	for (var i=0;i<obj.length;i++){
		if (obj[i].name == "delid"){
			if (obj[i].checked==true) obj[i].checked = false;
			else obj[i].checked = true;
		}
	}
}

function link(){
    document.getElementById("fom").action="addrenwu.htm";
   document.getElementById("fom").submit();
}

function deleteMul(){
	var v = document.getElementsByName("delid");
	var url="<%=path %>/PersonServlet?method=delmul";
	/* alert(url); */
	for(var i=0; i<v.length; i++){
		var ck_person = v[i];
		if(ck_person.checked==true){
			/* alert(ck_person.value); */
			url = url + "&id=" + ck_person.value;
		}
	}
	window.location.href = url;
}

function go(){
	var v = document.getElementById("turnTo");
	var url="<%=path %>/PersonServlet?method=a";
	/* alert(url+"&turnTo="+v.value); */
	window.location.href = url+"&turnTo="+v.value;
}

</SCRIPT>

<body>
  <form name="fom" id="fom" method="post" action="/test0821/PersonServlet">
  	<input type="hidden" name="method" value="findname" />
	<table width="100%" border="0" cellspacing="0" cellpadding="0">
  
      <tr>
    	<td height="30">      
    	  <table width="100%" border="0" cellspacing="0" cellpadding="0">
        	<tr>
          	  <td height="62" background="../images/nav04.gif">

		        <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
		    	  <tr>
				    <td width="21"><img src="../images/ico07.gif" width="20" height="18" /></td>
				    <td width="538">查看人员:按姓名:
					  <input name="username" type="text" size="12" />
					  <input name="Submit4" type="submit" class="right-button02" value="查 询" /></td>
			   		<td width="144" align="left">
			   		  <a href="files/superQuery.jsp">
			     	    <input name="Submit3" type="button" class="right-button07" value="高级搜索" />
			     	  </a>
			   	    </td>	
		    	  </tr>
          		</table>
          	  </td>
        	</tr>
         </table></td></tr>
     <tr>
       <td><table id="subtree1" style="DISPLAY: " width="100%" border="0" cellspacing="0" cellpadding="0">
         <tr>
           <td><table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
          	 <tr>
               <td height="20"><span class="newfont07">选择:
                 <a href="#" class="right-font08" onclick="selectAll();">全选</a>-
                 <a href="#" class="right-font08" onclick="unselectAll();">反选</a></span>
	             <input name="Submit" type="button" class="right-button08" value="删除所选人员" onclick="deleteMul()" />
	             <input name="Submit2" type="button" class="right-button08" value="添加人员" onclick="link();"/></td>
          	 </tr>
             <tr>
               <td height="40" class="font42">
			   <table width="100%" border="0" cellpadding="4" cellspacing="1" bgcolor="#464646" class="newfont03">
				 <tr class="CTitle" >
                   <td height="22" colspan="7" align="center" style="font-size:16px">人员信息详情</td>
                 </tr>
                 <tr bgcolor="#EEEEEE">
                   <td width="4%">选择</td>
                   <td width="10%">人员编号</td>
				   <td width="10%">姓名</td>
                   <td width="10%">性别</td>
				   <td width="10%">年龄</td>
				   <td width="5%">电话</td>
				   <td width="12%">操作</td>
                 </tr>
                 <c:forEach items="${list }" var="v">
	               <tr bgcolor="#FFFFFF">
	                 <td><input type="checkbox" name="delid" value="${v.id }" /></td>
	                 <td>${v.id }</td>
					 <td>${v.name }</td>
	                 <td>${v.sex }</td>
	                 <td>${v.age }</td>
	                 <td>${v.phone }</td>
	                 <td><a href="/test0821/PersonServlet?method=findid&cid=${v.id }">编辑|</a>
	                 <a href="files/listrenwumingxi.htm">查看|</a>
				     <a href="/test0821/PersonServlet?method=del&cid=${v.id }">删除</a></td>
	               </tr>
	             </c:forEach>
                 </table></td>
               </tr>
             </table>
             <table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
        	   <tr>
          		 <td height="6"><img src="../images/spacer.gif" width="1" height="1" /></td>
        	   </tr>
        	   <tr>
          		 <td height="33"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="right-font08">
               	   <tr>
                	 <td width="50%">共 <span class="right-text09">${page }</span> 页 | 第 <span class="right-text09">${currentpage }</span> 页</td>
                	 <td width="49%" align="right">[<a href="/test0821/PersonServlet?method=a" class="right-font08">首页</a> | 
                	   <a href="PersonServlet?method=a&currentpage=${currentpage-1==0?1: currentpage-1}" class="right-font08">上一页</a> | 
                	   <a href="/test0821/PersonServlet?method=a&currentpage=${currentpage+1==page?page: currentpage+1}" class="right-font08" method="get">下一页</a> | 
                	   <a href="/test0821/PersonServlet?method=a&currentpage=${page}" class="right-font08">末页</a>] 转至:</td>
                     <td width="1%"><table width="20" border="0" cellspacing="0" cellpadding="0">
                       <tr>
                         <td width="1%"><input id="turnTo" name="turnTo" type="text" class="right-textfield03" size="1" /></td>
                         <td width="87%"><input type="button" class="right-button06" onclick="go()" value="Go"/></td>
                       </tr>
                     </table></td>
                   </tr>
                 </table></td>
               </tr>
             </table></td>
           </tr>
		 </table></td>
	   </tr></table>
	 </form>
  </body>

(1)判断方法

<a href="PersonServlet?method=a&currentpage=${currentpage-1==0?1: currentpage-1}" class="right-font08">上一页</a>

该行代码中,用到了<判断条件>?<结果1>:<结果2>来传递值。

(2)使用js来传值和跳转

页面跳转使用function go()方法来实现,姓名模糊查询使用表单提交来实现。

这是因为js的url传递中不能传递汉字,而姓名查询显然拥有汉字。

 5、editPerson.jsp

<body class="ContentBody">
  <form action="/test0821/PersonServlet" method="post" name="fom" id="fom">
  <input type="hidden" name="method" value="update" />
	<div class="MainDiv">
	  <table width="99%" border="0" cellpadding="0" cellspacing="0" class="CContent">
  		<tr>
      	  <th class="tablestyle_title" >人员修改页面</th>
  		</tr>
  		<tr>
    	  <td class="CPanel">
			<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
			  <tr><td align="left">
				<input type="button" name="Submit" value="保存" class="button" onclick="alert('保存成功!');"/> 
				<input type="button" name="Submit2" value="返回" class="button" onclick="window.history.go(-1);"/>
			  </td></tr>
			  <tr>
				<td width="100%">
				  <fieldset style="height:100%;">
				    <legend>修改人员</legend>
					<table border="0" cellpadding="2" cellspacing="1" style="width:100%">
					  <tr>
					    <td nowrap align="right" width="13%">编号:</td>
					    <td><input name="id" id="Input21" class="text" style="width:154px" value="${p1.id }" /></td>
					    <td align="right" width="19%">姓名:</td>
					    <td width="27%">
					      <input name="name" id="Input22" class="text" style="width:154px" value="${p1.name }" />
					    </td>
					  </tr>
					  <tr>
					    <td nowrap align="right">性别:</td>
					    <td>
                            <input type="radio" name="sex" value="男" <c:if test="${p1.sex=='男' }">checked</c:if>/>男
                            <input type="radio" name="sex" value="女" <c:if test="${p1.sex=='女' }">checked</c:if>/>女
                         </td>
					    <td align="right">年龄:</td>
					    <td><input name="age" id="Input" class="text" style="width:154px" value="${p1.age }" /></td>
					  </tr>
					  <tr>
					    <td nowrap align="right">电话:</td>
					    <td><input name="phone" id="Input" class="text" style="width:154px" value="${p1.phone }" /></td>
					  </tr>
					</table>
			 		<br />
				  </fieldset>			
				</td>
			  </tr>
			</table>
	      </td>
        </tr>
  
		<tr>
			<td colspan="2" align="center" height="50px">
			<input type="button" name="Submit" value="保存" class="button" onclick="link();"/> 
			<input type="button" name="Submit2" value="返回" class="button" onclick="window.history.go(-1);"/></TD>
		</tr>
	  </table>

	</div>
  </form>
</body>

6、superQuery.jsp

<body class="ContentBody">
  <form action="<%=path %>/PersonServlet" method="post" name="form">
  	<input type="hidden" name="method" value="super" />
	<div class="MainDiv">
	  <table width="99%" border="0" cellpadding="0" cellspacing="0" class="CContent">
  		<tr><th class="tablestyle_title" >高级搜索</th></tr>
  		<tr><td class="CPanel">
		  <table border="0" cellpadding="0" cellspacing="0" style="width:100%">
			<tr id="zdjh">
			  <td width="100%">
				<fieldset style="height:100%;">
				  <table border="0" cellpadding="2" cellspacing="1" style="width:100%">
				    <tr>
					  <td nowrap align="right" width="15%">用户姓名:</td>
					  <td width="35%"><input name="name" type="text" class="text" style="width:154px" />
					</tr>
					<tr>
					  <td align="right">性别:</td>
					  <td><select name="sex" >
                        <option value='' selected="selected">==请选择==</option>
                        <option value="男">男</option>
                        <option value="女">女</option>
                      </select></td>
					</tr>
					<tr>
					  <td nowrap align="right" width="15%">电话:</td>
					  <td width="35%"><input name="phone" type="text" class="text" style="width:154px"/>
					</tr>
				  </table>
			      <br />
				</fieldset>
			  </td>
		    </tr>
		  </table>
	    </td></tr>
		<tr>
			<td colspan="2" align="center" height="50px">
			  <input type="submit" name="Submit" value="搜索" class="button" /> 
			  <input type="button" name="Submit2" value="返回" class="button" onclick="window.history.go(-1);"/>
			</td>
		</tr>
      </table>
	</div>
  </form>
</body>

前言 1 第一章 相关技术研究 2 1.1 JAVA简介 4 1.2 Web应用程序开发环境—JSP技术 4 1.3 数据库的选择 4 1.3.1 MySql 4 1.3.2 开发工具的选择 5 1.4 Tomcat应用服务器 5 1.5 B/S 开发模式 5 第二章 可行性分析 7 2.1 技术可行性 7 2.2 操作可行性 7 2.3 经济可行性 7 2.4 管理可行性 7 3.1系统概述 8 3.2 功能需求 8 3.3 性能需求 8 3.4 系统需求 9 3.5 程序设计的数据需求 9 3.5.1数据录入和处理的准确性 9 3.5.2 数据的一致性与完整性 9 3.6数据的共享与独立性 9 第四章 系统设计 10 4.1工作环境的介绍 10 4.2 系统功能设计 10 4.3 项目管理 11 4.4成员管理 11 4.5目标模块 11 4.6资料库模块 11 4.7数据存储分析 11 4.8 数据模型设计 11 4.9各个实体之间的联系 15 4.9.1 举例说明 15 4.9.2功能分析 16 4.10 系统设计 16 4.10.1软件模块结构设计 16 4.10.2数据库设计 17 4.11系统开发的目标 17 第五章 系统实现 18 5.1系统登陆界面 18 5.2新建项目界面 18 5.2.1添加成员界面 19 5.2.2修改密码界面 19 5.3系统主界面 19 5.4目标界面 20 5.4.1添加目标界面 20 5.5任务界面 21 5.5.1 添加任务界面 21 5.6资料库界面 22 5.6.1分享新资料界面 22 5.6.2资料库显示界面 22 5.6.3删除资料界面 23 5.6.4编辑资料界面 23 5.7 文件上传界面 23 5.7.1新建文件夹界面 23 5.7.2上传文件界面 24 5.7.3文件界面 24 5.8 联系人界面 24 5.8.1添加联系人界面 25 5.8.2修改联系人界面 25 5.8.3查看联系人记录界面 26 5.9想法界面 26 5.9.1发布想法界面 26 5.9.2评论想法界面 27 5.10 部分功能实现代码演示 27 第六章 性能测试及分析 32 6.1测试实例(测试集)的研究与选择 32 6.1.1 登陆测试 32 6.1.2 创建项目 目标测试 32 6.2测试环境与测试条件 32 6.3实例数据选取 33 6.4测试结果的分析和问题的解决 33 结束语 34 致谢 35 参考文献 36
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值