欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaweb黑马旅游网站

程序员文章站 2024-03-07 14:27:45
...

环境的搭建

第一步:先搭建maven环境,使用maven创建javaweb项目。Idea环境下创建具体步骤为:

  1. File-new-Module-设置项目组和项目名称和项目保存位置
  2. File-setting-Maven-设置maven文件配置和仓库所在位置,建立自动映射
  3. 选中项目在Facets里面添加webinf要放在main\webapp下面

第二步:配置相关文件

  1. 先导入相关工具类和前端页面模板还有配置文件具体目录如下:javaweb黑马旅游网站
  2. 设置好mybatis的相关配置,包括数据库位置和用户名密码。

用户模块的搭建

用户模块

实现的功能:用户注册,用户登录,用户登出
**步骤分析:**注册用了ajax技术获取表单信息用向服务器发送请求,这里用到的新技术是用序列化获取表单的所有参数的值。
var params = $("#registerForm").serialize();
javaweb黑马旅游网站
值得注意的一点是:这里的表单不能使用type=submit,因为表单提交是属于同步发送请求,所以前端页面的表单可以使用普通按钮绑定事件的方法来提交ajax异步发送请求。
javaweb黑马旅游网站
web层获取到ajax的请求参数以后使用工具类BeanUtils进行封装,BeanUtils.populate(user,map);
参数传给Service层然后service层连接数据库,把封装好的javabean插入到数据库中,这里的密码使用工具类进行了加密:user.setPassword(Md5Util.getMD5(user.getPassword()));

在进行注册的时候对用户名、密码、邮箱、手机号码等信息使用jquery、ajax技术进行了合法性 校验,其中校验用户名需要发送ajax去数据库查询这个用户名是否存在,其他的信息则直接使用正则表达式进行校验即可。

用户登录的时候先是前端通过ajax传递参数:用户名和密码,验证码,这三个直接使用request.getparameter去获取请求参数即可,系统的验证码是工具类生成好的,绑定了点击事件和页面加载事件:
javaweb黑马旅游网站并且每次生成工具类都会把它放到session会话中,web层进行校验的时候直接进行调用即可。
这里在进行校验的时候除了要向前台发送是否校验通过,还要发送校验的信息,所以要返回一个javabean,这个javavean封装了返回是否成功的信息和返回失败的信息还有成功的信息。

public class ResultInfo {
    private boolean flag; //表示服务器的执行结果
    private String errorMsg; // 存放错误信息
    private Object successData;
    }

由于是javabean,ajax需要接收的返回值是json类型的数据所以web层调用service层进行查询后要对javabean进行封装,使用工具类:

                String s = objectMapper.writeValueAsString(resultInfo);
                response.getWriter().print(s);

由于验证码和用户名密码校验都需要返回resultinfo信息,所以把这段代码抽取出来直接放在resultinfo里面进行调用即可。

    public String toJson(Object obj) throws JsonProcessingException {
        ObjectMapper om = new ObjectMapper();
        String jsonStr = om.writeValueAsString(obj);
        return jsonStr;
    }

最后要把用户的信息放入到session作用域中方便回显读取,这里为了防止用户清除cookie导致读取不到session,所以要对cookie进行设置指定时间覆盖原来的绑定的cookie

                Cookie cookie = new Cookie("JSESSIONID", session1.getId());
                cookie.setMaxAge(30*60);
                cookie.setPath(request.getContextPath());
                response.addCookie(cookie);

接下来是用户信息的回显模块,每一次进行头页面加载的时候,都得调用ajax去web层查询session中是否存储 了用户信息,如果有的话就回显回页面。
最后一个是登出模块,在表单中进行请求,清除用户的session信息后跳转回到首页。

        request.getSession().invalidate();
        response.sendRedirect(request.getContextPath());

最后全部完成后进入代码优化阶段
这里为了防止servlet的代码进行太多的方法判断对代码逻辑进行了抽取:提交过来的action方法必须和servet要调用的方法一致,新建一个BaseServlet类继承了HttpServlet,再让UserServlet去继承这个类,当请求过来的时候会发现UserServlet没有doget/dopost方法,就去找他的父类,由BaseServlet使用反射技术进行方法的调用。

        try {
            String action = req.getParameter("action");
            Class clazz = this.getClass();
            Method method = clazz.getMethod(action, HttpServletRequest.class, HttpServletResponse.class);
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }

这里的this指的是谁调用方法,this指的就是哪个对象。注:每次请求过来的时候UserServlet都是会创建一个对象的。

相关标签: 笔记 java