18-Javaweb-实战1(user相关)

目录

一、商城的实体

1-1 准备工作

1-1-1 数据库和表

1-1-2 项目

二、用户模块

2-1 通用servlet设计    

2-1-1 添加用户的时候

2-1-2 修改用户的时候

2-1-3 在userservlet中doget方法中

2-1-4 我们可以直接重写service方法即可

2-1-5 BaseServlet extends HttpServlet{}(编写父类)

2-1-6 在baseservlet中重写service方法

2-1-7 完善请求转发

 2-1-8 BaseServlet实现

三、案例1-用户注册        

3-1 步骤实现 

3-1-1 在index.jsp上点击 注册页面 跳转到register.jsp

3-1-2 点击注册 

3-1-3 在userservlet中编写一个registUI 方法

3-2 完成注册

3-2-0 jsp页面

3-2-1 regist

3-2-2 userservice中的service

3-2-3 userdao dao 添加一条数据        

3-3 解决-BeanUtils不支持字符串装成时间

3-4 扩展-使用算法加密密码

3-5 电子邮箱:就是在邮件服务器上开启的一块空间

3-6 本地的服务器 

3-6-1 邮件服务器----安装 易邮软件

3-6-2 新增几个账户

3-7 收件箱安装 Foxmail 并创建用户---接受邮件的服务器为本机

3-8 邮件工具类

3-9 服务器发送邮件(在 service中实现)

四、案例2-用户激活

4-1 邮箱的连接点击

4-2 需要在UserServlet编写一个active

4-3 userService中

五、案例3-用户登录

5-1 步骤分析

5-1-1 在index.jsp上登录连接 点击 跳转到login.jsp

5-1-2 修改页面上的form表单  action method  每个标签添加name属性

5-1-3 login操作 

5-1-4 页面重定向到首页上

六、案例4-用户退出

6-1 步骤分析 

6-1-1 点击用户退出 

6-1-2 编写logout方法


 

  • 一、商城的实体

    用户
    订单
    商品
    分类

  • 1-1 准备工作

  • 1-1-1 数据库和表

    create database store28;
    use store28;        
    CREATE TABLE `user` (
      `uid` varchar(32) NOT NULL,
      `username` varchar(20) DEFAULT NULL,
      `password` varchar(100) DEFAULT NULL,
      `name` varchar(20) DEFAULT NULL,
      `email` varchar(30) DEFAULT NULL,
      `telephone` varchar(20) DEFAULT NULL,
      `birthday` date DEFAULT NULL,
      `sex` varchar(10) DEFAULT NULL,
      `state` int(11) DEFAULT NULL,
      `code` varchar(64) DEFAULT NULL,
      PRIMARY KEY (`uid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • 1-1-2 项目

    包结构
        com.itheima.web.servlet
        com.itheima.web.filter
        com.itheima.service         ---service 的接口
        com.itheima.service.impl     ---service 的实现类
        com.itheima.dao                ---dao的接口    
        com.itheima.dao.impl        ---dao 的实现类 
        com.itheima.domain
        com.itheima.utils

        com.itheima.constant            
    jar包
        驱动
        c3p0
        dbuitls
        beanutils
        jstl
        邮件
    工具类和配置文件
        datasourceutils 和 c3p0配置文件
        uuidutils
        uploadutils
        md5uitls
        mailutils            
    前台页面
        将页面拷贝到项目中

  • 二、用户模块

    注册
        发送邮件的方式发送激活码 
    激活
    登录
    退出

  • 2-1 通用servlet设计    

    只定义一个Userservlet
        重写doget和dopost        

  • 2-1-1 添加用户的时候

    以前: /store/addUser
    现在: /store/user?method=add        

  • 2-1-2 修改用户的时候

    以前: /store/updateUser
    现在: /store/user?method=update        

  • 2-1-3 在userservlet中doget方法中

    Stirng m=request.getParameter("method");
    if("add".equals(m)){
        add(HttpServletRequest,HttpServletResponse)
    }else if("update".equals(m)){
        update(HttpServletRequest,HttpServletResponse)
    }else if(){        
    }    

  • 2-1-4 我们可以直接重写service方法即可

    在service方法中写上面的判断代码即可

    但对于每个servlet都要写  重复的 判断代码——结构一样

  • 2-1-5 BaseServlet extends HttpServlet{}(编写父类)

    其他的servlet继承baseServlet    

  • 2-1-6 在baseservlet中重写service方法

    1.获取请求的方法
    2.找到相应的子类 父类中的this代表的是子类
        Class clazz=this.getClass()
    3.子类调用方法 ——所有都 if else,不能全包含,太麻烦,反射——可以获取所有方法
        通过方法名称 获取一个指定的方法 
            Method m=clazz.getMethod(方法名,HttpServletRequest.class,HttpServletResponse.class)
        方法执行
            m.invoke(this,HttpServletRequest,HttpServletResponse);    

  • 2-1-7 完善请求转发

    以前在servlet中 我们执行方法之后无非 请求转发 重定向 打印数据 

    请求转发  reuqest.getRequestDispatcher().forward()        
    继续完善我们baseservlet中service
        在第3步,方法执行返回值,
        现在我让所有的方法都返回一个字符串  add update
            字符串代表的是请求转发的路径
            若该方法不转发只需要返回一个null
        String s=(String)m.invoke(this,HttpServletRequest,HttpServletResponse);
        if(s!=null){
            reuqest.getRequestDispatcher(s).forward(...);
        }

  •  2-1-8 BaseServlet实现


/**
 * 通用的servlet
 */
public class BaseServlet extends HttpServlet {
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			// 1.获取子类  创建子类或者调用子类的时候 this代表的是子类对象
			@SuppressWarnings("rawtypes")
			Class clazz = this.getClass();
			//System.out.println(this);

			// 2.获取请求的方法
			String m = request.getParameter("method");
			if(m==null){
				m="index";
			}
			//System.out.println(m);

			// 3.获取方法对象
			Method method = clazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class);
			
			// 4.让方法执行 返回值为请求转发的路径
			String s=(String) method.invoke(this, request,response);//相当于 userservlet.add(request,response)
			
			// 5.判断s是否为空
			if(s!=null){
				request.getRequestDispatcher(s).forward(request, response);
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException();
		} 

	}
	
	
	public String index(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		return null;
	}
	
}

 

  • 三、案例1-用户注册        

  • 3-1 步骤实现 

  • 3-1-1 在index.jsp上点击 注册页面 跳转到register.jsp

<body>
<jsp:forward page="/index"></jsp:forward>
</body>
  • 3-1-2 点击注册 

  <a href="/store/user?method=registUI"></a> 
<li><a href="${pageContext.request.contextPath }/user?method=loginUI">登录</a></li>
<li><a href="${pageContext.request.contextPath }/user?method=registUI">注册</a></li>
  • 3-1-3 在userservlet中编写一个registUI 方法

    请求转发到 register.jsp即可.

	/**
	 * 跳转到 注册页面
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String registUI(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		return "/jsp/register.jsp";
	}

 

  • 3-2 完成注册

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值