JavaWeb开发项目 电子书城项目(二) 优化电子书城项目代码

前面我们已经对电子书城项目中用户模块进行实现,但是在代码上可以进行再一部优化,可以使代码更具有维护性和扩展性。

1.页面进行jsp动态化

对前端代码中的html代码进行jsp动态化处理,处理的步骤如下:

  • 1.在html页面中第一行添加page指令。
  • 2.将html文件后缀名修改为.jsp。
  • 3.在编译器IDEA中进行搜索替换。(IDEA中快捷键:Ctrl+Shift+R可以实现搜索替换功能)。

在IDEA中执行搜索替换的操作如下图所示:
在这里插入图片描述

将html文件修改为jsp文件的效果如下:
在这里插入图片描述


2.当登录或者注册失败时,提供错误提示进行表单回显

当用户登录失败后,Servlet程序段需要添加回显信息到Request域中,才能进行对应的表单回显。

public class LoginServlet extends HttpServlet {
    private UserService userService=new UserServiceImpl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //2.调用service层进行登录
        if (userService.login(new User(null,username,password,null))==null) {
            //返回null表示登录失败
            //把错误信息,和回显表单项信息,保存在Request域中
            req.setAttribute("msg","用户名或者密码错误");
            req.setAttribute("username",username);
            //跳转回登录界面
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req,resp);
        }else{
            //登陆成功
            //跳转到登录成功界面
            req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req,resp);
        }

    }


}

jsp页面,需要对回显信息进行输出

<span class="errorMsg">
//对回显信息进行输出							
<%=request.getAttribute("msg")==null?"请输入用户名或者密码":request.getAttribute("msg")%>
								</span>
							</div>
							<div class="form">
								<form action="userServlet" method="post">
									<input type="hidden" name="action" value="login" />
									<label>用户名称:</label>
									<input class="itxt" type="text" placeholder="请输入用户名"
										   autocomplete="off" tabindex="1" name="username"
		//对回显信息进行显示								   
										   value=<%=request.getAttribute("username")==null?"":request.getAttribute("username")%> >

当登录失败时,提供错误提示进行表单回显的效果:
在这里插入图片描述


3.BaseServlet的抽取

在项目开发中,一个模块一般只使用一个Servlet程序。

3.1 将LoginServlet和Register程序合并为UserServlet

在这里插入图片描述
在login.jsp页面和regist.jsp页面中增加hidden标签,分别表示登录和注册功能。然后将LoginServlet和RegistServet合并成一个UserServlet程序。

public class UserServlet extends HttpServlet {
      private UserService userService = new UserServiceImpl();
			/**
			* 处理登录的功能
			* @param req
			* @param resp
			* @throws ServletException
			* @throws IOException
			*/
	protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
		//1、获取请求的参数
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		// 调用 userService.login()登录处理业务
		User loginUser = userService.login(new User(null, username, password, null));
		// 如果等于 null,说明登录 失败!
		if (loginUser == null) {
		// 把错误信息,和回显的表单项信息,保存到 Request 域中
		req.setAttribute("msg","用户或密码错误!");
		req.setAttribute("username", username);
		//
		跳回登录页面
		req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
		} else {
		// 登录 成功
		//跳到成功页面 login_success.html
		req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req, resp);
		}
		}
		/**
		* 处理注册的功能
		* @param req
		* @param resp
		* @throws ServletException
		* @throws IOException
		*/
		protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
		IOException {
		//
		1、获取请求的参数
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		String email = req.getParameter("email");
		String code = req.getParameter("code");
		//
		2、检查 验证码是否正确
		=== 写死,要求验证码为:abcde
		if ("abcde".equalsIgnoreCase(code)) {
		//
		3、检查 用户名是否可用
		if (userService.existsUsername(username)) {
		System.out.println("用户名[" + username + "]已存在!");
		// 把回显信息,保存到 Request 域中
		req.setAttribute("msg", "用户名已存在!!");
		req.setAttribute("username", username);
		req.setAttribute("email", email);
		//
		跳回注册页面
		req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp);
		} else {
		//
		可用
		//
		调用 Sservice 保存到数据库
		userService.registUser(new User(null, username, password, email));
		//
		//
		跳到注册成功页面 regist_success.jsp
		req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req, resp);
		}
		} else {
		// 把回显信息,保存到 Request 域中
		req.setAttribute("msg", "验证码错误!!");
		req.setAttribute("username", username);
		req.setAttribute("email", email);
		System.out.println("验证码[" + code + "]错误");
		req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp);
		}
		}
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
		IOException {
		String action = req.getParameter("action");
		if ("login".equals(action)) {
		login(req, resp);
		} else if ("regist".equals(action)) {
		regist(req, resp);
}
}
}

还需要在login.jsp添加隐藏域和修改请求地址。

<form action="userServlet" method="post">		
  <input type="hidden" name="action" value="login" />

在regist.jsp添加隐藏域和修改请求地址。

<form action="userServlet" method="post">		
	<input type="hidden" name="action" value="regist"/>

3.2 使用反射来优化大量的else if代码

在实际中,用户模块除过注册登录功能外,还具有很多功能。代码中具有很多else if方法,随着方法的增多,代码的维护性和可复用性不高。出现这种情况,我们可以使用反射来优化大量else if代码。

 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        //获取action参数值
        String action = req.getParameter("action");
        try {
            //通过反射获取action对应的业务方法
            Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
            //通过反射调用业务方法
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

3.3 抽取BaseServlet程序

在这里插入图片描述

public abstract class BaseServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        //获取action参数值
        String action = req.getParameter("action");
        try {
            //通过反射获取action对应的业务方法
            Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
            //通过反射调用业务方法
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}


4.BeanUtils的使用

BeanUtils工具类,它可以一次性把所有的请求的参数注入到JavaBean中。BeanUtils工具类,经常用于把Map中的值注入到JavaBean中,或者是对象属性值的拷贝操作。

BeanUtils 它不是 JDK 的类,而是第三方的工具类。导入需要的 jar 包:
commons-beanutils-1.8.0.jar,commons-logging-1.1.1.jar。

编写WebUtils工具类:

public class WebUtils {
    /**
     * 把Map中的值注入到对应的JavaBean属性中。
     * @param value
     * @param bean
     */
    public static <T> T copyParamToBean( Map value , T bean ){
        try {
            System.out.println("注入之前:" + bean);
            /**
             * 把所有请求的参数都注入到user对象中
             */
            BeanUtils.populate(bean, value);
            System.out.println("注入之后:" + bean);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL Server 2000实现) 1 教学视频:1小时42分 1.1 开发背景 2 1.2 系统分析 2 1.2.1 需求分析 2 1.2.2 可行性分析 2 1.2.3 编写项目计划书 4 1.3 系统设计 6 1.3.1 系统目标 6 1.3.2 系统功能结构 6 1.3.3 业务逻辑编码规则 7 1.3.4 系统流程图 8 1.3.5 构建开发环境 8 1.3.6 系统预览 9 1.3.7 文件夹组织结构 10 1.4 数据库设计 10 1.4.1 数据库分析 10 1.4.2 进销存管理系统的E-R图 11 1.4.3 使用PowerDesigner建模 12 1.4.4 创建数据库 15 1.5 主窗体设计 16 1.5.1 创建主窗体 17 1.5.2 创建导航面板 18 1.6 公共模块设计 21 1.6.1 编写Dao公共类 22 1.6.2 编写Item类 25 1.7 基础信息模块设计 26 1.7.1 基础信息模块概述 26 1.7.2 基础信息模块技术分析 27 1.7.3 供应商添加实现过程 27 1.7.4 供应商修改与删除实现过程 30 1.7.5 单元测试 32 1.8 进货管理模块设计 36 1.8.1 进货管理模块概述 36 1.8.2 进货管理模块技术分析 38 1.8.3 进货单实现过程 38 1.9 查询统计模块设计 42 1.9.1 查询统计模块概述 42 1.9.2 查询统计模块技术分析 43 1.9.3 销售查询实现过程 43 1.10 库存管理模块设计 45 1.10.1 库存管理模块概述 45 1.10.2 库存管理模块技术分析 46 1.10.3 价格调整实现过程 46 1.10.4 单元测试 48 1.11 系统打包发布 49 1.12 开发技巧与难点分析 51 1.13 使用PowerDesigner逆向生成数据库 E-R图 52 1.14 本章总结 54 第2章 企业内部通信系统(Swing+JavaDB 实现) 55 教学视频:1小时40分 2.1 开发背景 56 2.2 系统分析 56 2.2.1 需求分析 56 2.2.2 可行性分析 56 2.2.3 编写项目计划书 58 2.3 系统设计 60 2.3.1 系统目标 60 2.3.2 系统功能结构 60 2.3.3 数据库设计 60 2.3.4 系统预览 62 2.3.5 文件夹组织结构 63 2.4 主窗体设计 64 2.4.1 创建主窗体 64 2.4.2 记录窗体位置 68 2.5 公共模块设计 69 2.5.1 数据库操作类 69 2.5.2 系统工具类 74 2.6 系统托盘模块设计 79 2.6.1 系统托盘模块概述 79 2.6.2 系统托盘模块技术分析 79 2.6.3 系统托盘模块实现过程 80 2.7 系统工具模块设计 82 2.7.1 系统工具模块概述 82 2.7.2 系统工具模块技术分析 82 2.7.3 系统工具模块实现过程 83 2.8 用户管理模块设计 87 2.8.1 用户管理模块概述 87 2.8.2 用户管理模块技术分析 87 2.8.3 用户管理模块实现过程 88 2.8.4 单元测试 93 2.9 通信模块设计 94 2.9.1 通信模块概述 94 2.9.2 通信模块技术分析 95 2.9.3 通信模块实现过程 95 2.10 开发技巧与难点分析 99 2.11 使用JDK 6新增的系统托盘 99 2.12 本章总结 100 第3章 企业人事管理系统 (Swing+Hibernate+Oracle实现) 101 教学视频:2小时53分 3.1 开发背景 102 3.2 系统分析 102 3.3 系统设计 102 3.3.1 系统目标 102 3.3.2 系统功能结构 102 3.3.3 系统预览 104 3.3.4 业务流程图 105 3.3.5 文件夹结构设计 106 3.4 数据库设计 107 3.4.1 数据库分析 107 3.4.2 数据库概念设计 107 3.4.3 数据库逻辑结构设计 109 3.5 主窗体设计 110 3.5.1 导航栏的设计 110 3.5.2 工具栏的设计 112 3.6 公共模块设计 114 3.6.1 编写Hibernate配置文件 114 3.6.2 编写Hibernate持久化类和映射文件 115 3.6.3 编写通过Hibernate操作持久化对象的 常用方法 116 3.6.4 创建用于特殊效果的部门树对话框 117 3.6.5 创建通过部门树选取员工的面板和 对话框 119 3.7 人事管理模块设计 120 3.7.1 人事管理模块功能概述 120 3.7.2 人事管理模块技术分析 122 3.7.3 人事管理模块实现过程 122 3.7.4 单元测试 127 3.8 待遇管理模块设计 128 3.8.1 待遇管理模块功能概述 128 3.8.2 待遇管理模块技术分析 129 3.8.3 待遇管理模块实现过程 129 3.9 系统维护模块设计 133 3.9.1 系统维护模块功能概述 134 3.9.2 系统维护模块技术分析 136 3.9.3 系统维护模块实现过程 136 3.9.4 单元测试 140 3.10 开发技巧与难点分析 140 3.11 Hibernate关联关系的建立方法 141 3.11.1 建立一对一关联 141 3.11.2 建立一对多关联 142 3.12 本章总结 144 第4章 酒店管理系统(Swing+SQL Server 2005实现) 145 教学视频:2小时39分 4.1 概述 146 4.2 系统分析 146 4.3 系统设计 146 4.3.1 系统目标 146 4.3.2 系统功能结构 147 4.3.3 系统预览 147 4.3.4 业务流程图 149 4.3.5 文件夹结构设计 149 4.4 数据库设计 150 4.4.1 数据库分析 150 4.4.2 数据库概念设计 150 4.4.3 数据库逻辑结构设计 151 4.4.4 视图设计 151 4.5 公共模块设计 152 4.5.1 编写数据库连接类 152 4.5.2 封装常用的操作数据库的方法 153 4.5.3 自定义表格组件 154 4.5.4 编写利用正则表达式验证数据 合法性的方法 156 4.6 主窗体设计 156 4.7 用户登录窗口设计 158 4.8 开台签单工作区设计 164 4.8.1 开台签单工作区功能概述 164 4.8.2 开台签单工作区技术分析 165 4.8.3 开台签单工作区实现过程 165 4.8.4 单元测试 170 4.9 自动结账工作区设计 171 4.9.1 自动结账工作区功能概述 171 4.9.2 自动结账工作区技术分析 172 4.9.3 自动结账工作区实现过程 172 4.10 结账报表工作区设计 173 4.10.1 结账报表工作区功能概述 173 4.10.2 结账报表工作区技术分析 175 4.10.3 结账报表工作区实现过程 175 4.10.4 单元测试 179 4.11 后台管理工作区设计 180 4.11.1 后台管理工作区功能概述 180 4.11.2 后台管理工作区技术分析 181 4.11.3 后台管理工作区实现过程 181 4.11.4 单元测试 188 4.12 开发技巧与难点分析 188 4.13 使用Visio逆向生成数据库E-R图 190 4.14 本章总结 192 第5章 图书馆管理系统(Swing+SQL Server 2000实现) 193 教学视频:2小时14分 5.1 开发背景 194 5.2 需求分析 194 5.3 系统设计 194 5.3.1 系统目标 194 5.3.2 系统功能结构 194 5.3.3 系统流程图 195 5.3.4 系统预览 196 5.3.5 构建开发环境 196 5.3.6 文件夹组织结构 197 5.4 数据库设计 197 5.4.1 数据库分析 197 5.4.2 数据库概念设计 197 5.4.3 使用PowerDesigner建模 200 5.5 公共模块设计 201 5.5.1 数据库连接及操作类的编写 201 5.5.2 MenuActions类的编写 203 5.5.3 限制文本框长度类的编写 205 5.5.4 描述组合框索引与内容类的编写 206 5.5.5 在JLable上添加图片类的编写 208 5.6 主窗体设计 208 5.6.1 主窗体概述 208 5.6.2 主窗体技术分析 209 5.6.3 主窗体的实现过程 211 5.7 登录模块设计 214 5.7.1 登录模块概述 214 5.7.2 登录模块技术分析 215 5.7.3 登录模块实现过程 216 5.8 图书信息管理模块设计 219 5.8.1 图书信息管理模块概述 219 5.8.2 图书信息管理模块技术分析 221 5.8.3 图书信息管理模块实现过程 221 5.8.4 单元测试 229 5.9 图书借阅、归还模块设计 230 5.9.1 图书借阅、归还模块概述 230 5.9.2 图书借阅、归还模块技术分析 231 5.9.3 图书借阅、归还模块实现过程 232 5.9.4 单元测试 238 5.10 图书查询模块设计 239 5.10.1 图书查询模块概述 239 5.10.2 图书查询模块技术分析 239 5.10.3 图书查询模块实现过程 240 5.11 开发技巧与难点分析 242 5.11.1 级联删除 242 5.11.2 窗体中单选按钮即时显示 243 5.12 格式化的文本框 243 5.12.1 使用JFormattedTextField限制整型 数字输入 244 5.12.2 使用JFormattedTextField限制日期 输入 244 5.13 本章总结 245 第6章 企业快信(Swing+JavaDB实现) 246 教学视频:1小时35分 6.1 企业快信概述 247 6.2 系统分析 247 6.2.1 需求分析 247 6.2.2 可行性研究 247 6.3 系统设计 248 6.3.1 系统目标 248 6.3.2 系统功能结构 248 6.3.3 业务流程图 248 6.3.4 系统预览 249 6.3.5 构建开发环境 251 6.3.6 文件夹组织结构 252 6.4 数据库设计 253 6.4.1 数据库分析 253 6.4.2 数据库概念设计 253 6.4.3 数据库逻辑结构设计 254 6.4.4 视图设计 255 6.5 主窗体设计 255 6.6 公共模块设计 258 6.6.1 编写数据库连接类 258 6.6.2 封装常用的操作数据库的方法 260 6.7 资源管理模块设计 261 6.7.1 名片夹管理功能概述 261 6.7.2 名片夹管理功能技术分析 262 6.7.3 名片夹管理功能实现过程 262 6.8 发送短信模块设计 270 6.8.1 发送短信模块功能概述 270 6.8.2 发送短信模块技术分析 271 6.8.3 发送短信模块实现过程 272 6.9 发送邮件模块设计 276 6.9.1 发送邮件模块功能概述 276 6.9.2 发送邮件模块技术分析 277 6.9.3 发送邮件模块实现过程 277 6.10 系统设置模块设计 282 6.10.1 系统设置模块功能概述 282 6.10.2 系统设置模块技术分析 283 6.10.3 短信设置实现过程 283 6.10.4 邮箱设置实现过程 285 6.11 开发技巧与难点分析 287 6.12 使用短信猫和Java Mail组件 288 6.12.1 使用短信猫 288 6.12.2 使用Java Mail组件 290 6.13 本章总结 295 第7章 欣想电子(Spring+Hibernate +SQL Server实现) 296 教学视频:1小时53分 7.1 开发背景 297 7.2 系统分析 297 7.2.1 需求分析 297 7.2.2 可行性分析 297 7.3 系统设计 298 7.3.1 系统目标 298 7.3.2 系统功能结构 298 7.3.3 购物流程图 299 7.3.4 系统预览 300 7.3.5 构建开发环境 301 7.3.6 文件夹组织结构 304 7.4 数据库设计 304 7.4.1 数据库分析 305 7.4.2 数据库概念设计 305 7.4.3 PowerDesigner数据库建模 306 7.4.4 数据库创建 307 7.5 网站首页设计 308 7.5.1 首页布局 308 7.5.2 创建首页控制器 311 7.5.3 配置控制器 312 7.6 公共模块设计 314 7.6.1 编写Dao公共类 314 7.6.2 配置数据库连接和事务管理器 316 7.6.3 配置Spring控制器的请求映射 317 7.7 会员管理模块设计 319 7.7.1 会员管理模块概述 319 7.7.2 会员管理模块技术分析 320 7.7.3 会员注册的实现过程 321 7.7.4 会员登录的实现过程 324 7.8 购物模块设计 327 7.8.1 购物模块概述 327 7.8.2 购物模块技术分析 328 7.8.3 购物车的实现过程 328 7.8.4 收银台的实现过程 332 7.8.5 单元测试 335 7.9 商品管理模块设计 336 7.9.1 商品管理模块概述 336 7.9.2 商品管理模块技术分析 337 7.9.3 商品列表的实现过程 338 7.9.4 商品添加的实现过程 340 7.9.5 单元测试 343 7.10 发布与运行 344 7.11 开发技巧与难点分析 346 7.11.1 为Spring的数据源配置正确的URL 346 7.11.2 为Tiles指定错误页面 347 7.12 使用MyEclipse生成Hibernate 实体类和映射文件 347 7.13 本章总结 351 第8章 企业门户网站(JSP+JavaBean +SQL Server 2000实现) 352 教学视频:1小时9分 8.1 开发背景 353 8.2 需求分析 353 8.3 系统设计 353 8.3.1 系统目标 353 8.3.2 系统功能结构 354 8.3.3 业务流程图 355 8.3.4 系统预览 355 8.3.5 构建开发环境 356 8.3.6 文件夹组织结构 358 8.4 数据库设计 359 8.4.1 数据库需求分析 359 8.4.2 数据库概念设计 359 8.4.3 数据库逻辑结构设计 360 8.5 公共模块设计 361 8.5.1 定义connsqlserver类 361 8.5.2 创建Web应用过滤器 363 8.5.3 构建转码类 365 8.6 网站首页设计 365 8.6.1 首页概述 365 8.6.2 首页技术分析 365 8.6.3 首页的实现过程 367 8.7 商品介绍模块设计 369 8.7.1 商品介绍模块概述 369 8.7.2 商品介绍模块技术分析 369 8.7.3 商品介绍模块实现过程 370 8.8 后台登录模块设计 371 8.8.1 后台登录模块概述 371 8.8.2 后台登录模块技术分析 372 8.8.3 后台登录模块实现过程 373 8.8.4 单元测试 375 8.9 商品管理模块设计 376 8.9.1 商品管理模块概述 376 8.9.2 商品管理模块技术分析 377 8.9.3 商品管理模块实现过程 378 8.9.4 单元测试 388 8.10 新闻管理模块设计 389 8.10.1 新闻管理模块概述 389 8.10.2 新闻管理模块技术分析 389 8.10.3 新闻管理模块实现过程 391 8.11 开发技巧与难点分析 397 8.11.1 页面弹出窗口控制 397 8.11.2 FileUpload组件获取表单中的值 399 8.11.3 配置全局Tomcat连接池 399 8.12 Proxool连接池 400 8.12.1 Proxool安装 400 8.12.2 Proxool使用 400 8.13 本章总结 402 第9章 BBS系统(Struts+MySQL实现) 403 教学视频:1小时46分 9.1 开发背景 404 9.2 需求分析 404 9.3 系统设计 404 9.3.1 系统目标 404 9.3.2 系统功能结构 405 9.3.3 业务流程图 405 9.3.4 系统预览 406 9.3.5 构建开发环境 407 9.3.6 文件夹组织结构 408 9.4 数据库设计 409 9.4.1 数据库分析 409 9.4.2 数据库概念设计 409 9.4.3 PowerDesigner数据库建模 410 9.4.4 创建数据库 411 9.5 论坛首页设计 412 9.5.1 创建首页视图组件 412 9.5.2 创建首页配置文件 416 9.5.3 创建首页控制器 416 9.5.4 创建首页业务逻辑类 417 9.6 公共模块设计 419 9.6.1 数据库连接 419 9.6.2 配置消息资源文件 422 9.6.3 创建转码类 423 9.7 用户登录模块设计 424 9.7.1 用户登录概述 424 9.7.2 用户登录技术分析 424 9.7.3 用户登录实现过程 425 9.7.4 单元测试 429 9.8 用户注册模块设计 430 9.8.1 用户注册概述 430 9.8.2 用户注册技术分析 430 9.8.3 用户注册实现过程 430 9.9 用户发布主题模块设计 436 9.9.1 发布主题概述 436 9.9.2 发布主题技术分析 437 9.9.3 发布主题实现过程 437 9.9.4 单元测试 443 9.10 后台栏目管理模块设计 445 9.10.1 栏目管理概述 445 9.10.2 栏目管理技术分析 446 9.10.3 栏目管理实现过程 446 9.11 开发技巧与难点分析 449 9.12 Struts框架与日志 450 9.13 本章总结 452 第10章 手机网络游戏(J2ME+Servlet 实现) 453 教学视频:1小时15分 10.1 开发背景 454 10.2 系统分析 454 10.2.1 需求分析 454 10.2.2 可行性分析 454 10.3 系统设计 454 10.3.1 系统目标 454 10.3.2 系统功能结构 455 10.3.3 构建开发环境(根据语言的实际 情况写) 455 10.3.4 系统预览 456 10.3.5 文件夹组织结构 457 10.4 主程序设计 458 10.5 公共模块设计 462 10.5.1 创建Player公共类 462 10.5.2 创建Queue公共类 463 10.5.3 创建Umpire公共类 465 10.5.4 创建Desk公共类 466 10.6 游戏模块设计 469 10.6.1 游戏模块概述 469 10.6.2 游戏模块技术分析 470 10.6.3 棋盘绘制模块实现过程 470 10.6.4 按键处理模块实现过程 478 10.6.5 游戏信息处理模块实现过程 481 10.6.6 客户端信息处理模块概述 483 10.7 服务器模块设计 484 10.7.1 服务器模块概述 484 10.7.2 服务器模块技术分析 485 10.7.3 服务器模块实现过程 485 10.7.4 单元测试 490 10.8 发布与运行 491 10.8.1 服务器端的发布与运行 491 10.8.2 客户端的运行 493 10.9 开发技巧与难点分析 493 10.10 使用EclipseMe工具编写 手机程序 494 10.10.1 EclipseMe的安装 494 10.10.2 配置EclipseMe插件 495 10.10.3 创建J2ME项目 496 10.11 本章总结 497
JavaWeb项目是一个基于JavaWeb技术开发的在线图书销售平台。该项目旨在为用户提供一个方便快捷的购书平台,并支持在线购买、浏览图书信息等功能。 该项目的主要功能包括用户注册登录、图书分类浏览、商品搜索、购物车管理、订单管理等。 用户可以通过注册登录功能创建自己的账号,并进行个人信息的管理。用户登录后可以浏览不同分类的图书,并支持按关键字搜索特定的图书。同时,用户可以将心仪的图书添加到购物车中,并支持修改购物车数量和删除购物车中的图书。当用户完成商品的选购后,可以提交订单进行结算,实现购物流程的完整。 图书分类浏览的功能可以让用户根据自己的需求,选择不同的图书分类进行浏览和选择。用户可以根据自己的兴趣和需求来选择特定类型的图书。 商品搜索功能可以方便用户根据关键字快速找到所需要的图书。用户只需输入关键字即可快速搜索到与该关键字相关的图书信息。 购物车管理功能可以帮助用户管理已选购的图书。用户可以对购物车中的图书进行数量的增减和删除操作,方便用户根据自己的需求进行调整。 订单管理功能可以帮助用户查看和管理自己的订单。用户可以查看已购买的订单详情,并支持订单的取消和重新购买等操作。 总之,该JavaWeb项目通过提供用户注册登录、图书分类浏览、商品搜索、购物车管理、订单管理等功能,为用户打造了一个便利的在线图书销售平台。用户可以通过该平台方便地浏览、购买自己喜欢的图书,提高图书销售的便捷性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值