20210513书城第三、四阶段对代码进行优化

书城项目第三阶段:

a)首先进行jsp页面动态化:

1、在 html 页面顶行添加 page 指令。
2、修改文件后缀名为:.jsp
3、使用 IDEA 搜索替换.html 为.jsp(快捷键:Ctrl+Shift+R)

在这里插入图片描述

b)抽取页面中相同的格式和内容:

1.head中css、jquery、base标签


<%
    //request.getScheme()表示http
    //request.getServerName()表示主机名/ip地址(服务器ip地址)
    //request.getServerPort()表示端口号
    //request.getContextPath()表示工程路径
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()
    +request.getContextPath()+"/";
%>
<base href="<%=basePath%>">
<link type="text/css" rel="stylesheet" href="static/css/style.css" >
<script type="text/javascript" src="static/script/jquery-1.7.2.js"> </script>

2.每个页面的页脚


<div id="bottom">
		<span>
			尚硅谷书城.Copyright &copy;2015
		</span>
</div>

3.登录成功后的菜单

<div>
    <span>欢迎<span class="um_span">韩总</span>光临尚硅谷书城</span>
    <a href="../order/order.jsp">我的订单</a>
    <a href="../../index.jsp">注销</a>&nbsp;&nbsp;
    <a href="../../index.jsp">返回</a>
</div>

4.manage模块的菜单

<div>
    <a href="book_manager.jsp">图书管理</a>
    <a href="order_manager.jsp">订单管理</a>
    <a href="../../index.jsp">返回商城</a>
</div>

c)登录,注册错误提示,及表单回显

以登录回显为示例:
Servlet 程序端需要添加回显信息到 Request 域中
注意:这是一次请求,所以可以将信息传到request域中进行保存。
在这里插入图片描述

d)使用反射,优化代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一步:首先给表单项添加隐藏域并且修改请求地址
在这里插入图片描述
第二步:抽取BaseServlet类

public abstract class BaseServlet extends HttpServlet {

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //通过请求得到当前方法名
        String action = req.getParameter("action");

        try {
            //通过反射获取是哪种方法,action表示是方法名  req.getClass()表示参数类型
            Method method = this.getClass().getDeclaredMethod(action,HttpServletRequest.class,HttpServletResponse.class);
            //通过这种方法进行调用 this表示当前对象,后面的表示参数。
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

第三步:

public class UserServlet extends BaseServlet {
    UseService useService = new UseServiceImpl();

    //实现用户登录功能:
    protected void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //通过用户名和密码验证是否存在此用户
        User login = useService.login(new User(null, username, password, null));

        if(login!=null){
            //则证明存在此用户
            request.getRequestDispatcher("/pages/user/login_success.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","用户名或密码错误,请重新输入!");
            request.setAttribute("username",username);
            request.getRequestDispatcher("/pages/user/login.jsp").forward(request,response);

        }
    }

    //2.实现用户的注册功能:
    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.先检查验证码是否正确
        if("abcde".equalsIgnoreCase(code)) {
            //验证码正确:
            if(useService.existsUsername(username)){
                req.setAttribute("msg","用户名已经存在,请适当更改!");
                req.setAttribute("username",username);
                //用户名存在
                req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);

            }else{
                //用户名不存在
                useService.registUser(new User(null,username,password,email));
                req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req,resp);
            }

        }else {
            //验证码不正确:
            req.setAttribute("msg","验证码不正确,请重新输入");
            //  "/"表示: http://localhost:8080/book/ 映射到web目录下
            req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);

        }
    }

}

书城项目第四阶段:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值