JavaWeb学习——SSM框架实现登陆、注册与增删查改

1.各项配置

1. 依赖配置(pom.xml)

    <dependencies>

        <!--单元测试jar包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <!--Servlet依赖jar包-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
            <scope>runtime</scope>
        </dependency>

        <!--mybatis坐标-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.7</version>
        </dependency>

        <!--druid连接池jar包-->
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

        <!--jsoup依赖jar包-->
        <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.2</version>
        </dependency>

        <!--JSON解析器依赖jar包-->
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>

        <!--jstl依赖jar包-->
        <!-- https://mvnrepository.com/artifact/jstl/jstl -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!--BeanUntils依赖jar包-->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>


        <!--SpringMVC坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>

        <!--spring依赖jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>

        <!--JDBCTemplate依赖jar包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
    </dependencies>

2. web配置(web.xml)


<!--spring 监听器-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--配置全局过滤器,设置编码,避免请求数据乱码-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--配置SpringMVC的核心控制器-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!--服务器启动时加载-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--映射地址-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


3. Spring配置(applicationContext.xml)


    <context:component-scan base-package="com.Rendan">
        <!--排除web层(SpringMVC管理)-->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--加载druid.properties-->
    <context:property-placeholder location="classpath:druid.properties"/>

    <!--配置数据库连接池-->
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="url" value="${druid.url}"></property>
        <property name="username" value="${druid.username}"></property>
        <property name="password" value="${druid.password}"></property>
        <property name="driverClassName" value="${druid.driverClassName}"></property>
        <property name="initialSize" value="${druid.initialSize}"></property>
        <property name="maxActive" value="${druid.maxActive}"></property>
        <property name="maxWait" value="${druid.maxWait}"></property>
    </bean>

    <!--配置sessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="druidDataSource"></property>
        <!--加载mybatis核心配置文件-->
        <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
    </bean>

    <!--扫描mapper所在的包 为mapper创建实现类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.Rendan.mapper"></property>
    </bean>

4. SpringMV配置(spring-mvc.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
                                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!--mvc注解驱动,代替自己配置处理器映射器-->
    <mvc:annotation-driven/>

    <!--扫描controller包下注解-->
    <context:component-scan base-package="com.Rendan.web"/>

    <!--mvc找不到后交给原始容器Tomcat找(开放静态资源访问权限)-->
    <mvc:default-servlet-handler/>

</beans>

5. Mybatis配置

核心文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--自定义别名-->
    <typeAliases>
        <package name="com.Rendan.domain"/>
    </typeAliases>


</configuration>

实现接口配置(sql语句)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Rendan.mapper.MangerMapper">
    <select id="findAll" resultType="user">
        select *
        from user
    </select>

    <select id="manger_login" parameterType="manger" resultType="manger">
        select *
        from manger
        where mangerName = #{mangerName}
          and password = #{password}
    </select>

    <insert id="addUser" parameterType="user">
        insert into user
        values (null, #{userName}, #{gender}, #{age}, #{tel}, #{password})
    </insert>

    <select id="findAllFood" resultType="food">
        select *
        from food
    </select>

    <insert id="addFood" parameterType="food">
        insert into food
        values (null, #{foodName}, #{foodDescription}, #{price}, #{unit})
    </insert>

    <select id="findFoodById" parameterType="int" resultType="food">
        select *
        from food
        where id = #{id}
    </select>

    <update id="updateFood" parameterType="food">
        update food
        set foodName        = #{foodName},
            foodDescription = #{foodDescription},
            price           = #{price},
            unit            = #{unit}
        where id = #{id}
    </update>

    <delete id="deleteFoodById" parameterType="int">
        delete
        from food
        where id = #{id}
    </delete>

    <select id="findFoodsById" parameterType="int" resultType="food">
        select *
        from user_food uf,
             food f
        where uf.foodId = f.id
          and uf.userId = #{id}
    </select>


</mapper>

2.视图层

1. 登陆视图层

<body>
<%--动态获取虚拟目录--%>
<form action="${pageContext.request.contextPath}/manger/login" method="post">
    <div class="wapper">
        <img class="logo" src="../images/logo-main.jpg">
        <h2>你好管理员!</h2>
        <div class="a">
            <span>用户名:</span>
            <input class="user" type="text" placeholder="请输入用户名" name="mangerName"><br>
        </div>
        <div class="b">
            <span>&emsp;码:</span>
            <input class="user" type="password" placeholder="请输入密码" name="password"><br>
        </div>
        <input class="three" type="submit" value="登 录">

        <div class="focus">
            <%--el获取域中数据--%>
            <%--验证码--%>
            ${requestScope.cc_error}
            <%--用户名与密码--%>
            ${requestScope.longin_error}
            <%--登录过滤器--%>
            ${requestScope.login_msg}
        </div>

    </div>



    <%
        //获取所有Cookie
        Cookie[] cookies = request.getCookies();
        boolean flag = false;//没有cookie为lastTime
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                //获取cookie名称
                String name = cookie.getName();
                if ("lastTime".equals(name)) {
                    flag = true;
                    //有该cookie,不是第一次访问

                    //响应数据
                    //获取cookie的value实际时间
                    String time = cookie.getValue();

                    //URL解码
                    time = URLDecoder.decode(time, "utf-8");


    %>
    <div class="time">
        <span>欢迎回来,您上次访问的时间为: <%= time%> </span>
    </div>

    <%

                    //设置cookie的value
                    //获取当前时间字符,重新设置Cookie,重新发送Cookie
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    //URL编码解决特殊字符无法识别
                    str_date = URLEncoder.encode(str_date, "utf-8");
                    cookie.setValue(str_date);
                    //设置cookie存活时间
                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
                    response.addCookie(cookie);

                    break;

                }
            }
        }
        if (cookies == null || cookies.length == 0 || flag == false) {
            //没有 第一次访问
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            String str_date = sdf.format(date);
            //URL编码解决特殊字符无法识别
            str_date = URLEncoder.encode(str_date, "utf-8");
            Cookie cookie = new Cookie("lastTime", str_date);
            //设置cookie存活时间
            cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
            response.addCookie(cookie);
    %>
    <div class="time">
        <span>您好,欢迎首次访问!!!</span>
    </div>

    <%
        }
    %>
</form>

2. 操作视图层

    <script>
        function deleteUser(userId) {
            //用户安全提示
            if (confirm("您当真要删除?")){
                //访问路径执行删除
                location.href="${pageContext.request.contextPath}/deleteUser/"+userId;
            }
        }
    </script>
</head>
<body>
<div class="wapper">
    <h2>用户信息列表</h2>

    <table border="1" class="a">
        <tr class="a1">
            <th>id</th>
            <th>用户名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>电话号</th>
            <th>密码</th>
            <th>订单</th>
            <th>操作</th>
        </tr>
<%--jstl简化java书写遍历--%>
        <c:forEach items="${users}" var="user" varStatus="s">
            <tr>
                <td>&nbsp;&nbsp;${s.count}&nbsp;&nbsp;</td>
                <td>&nbsp;&nbsp;${user.userName}&nbsp;&nbsp;</td>
                <td>&nbsp;&nbsp;${user.gender}&nbsp;&nbsp;</td>
                <td>&nbsp;&nbsp;${user.age}&nbsp;&nbsp;</td>
                <td>${user.tel}</td>
                <td>&nbsp;&nbsp;${user.password}&nbsp;&nbsp;</td>
                <td>
                    <c:forEach items="${user.foods}" var="food">
                        &nbsp;&nbsp;${food.foodName}
                    </c:forEach>
                </td>
                <td>
                    <a class="cha" href="${pageContext.request.contextPath}/manger/findUserById?id=${user.id}">修改</a>&nbsp;
                    <a class="dle" href="javascript:deleteUser(${user.id})">删除</a>
                    <a class="check" href="${pageContext.request.contextPath}/findUserOrder">查询订单</a>
                </td>
            </tr>
        </c:forEach>

    </table>
    <a class="add" href="${pageContext.request.contextPath}/user/add.jsp">添加用户</a>
    <a class="return"href="${pageContext.request.contextPath}/manger/manger.jsp">返回</a>
</div>
</body>

3.web层

@Controller
@RequestMapping("/manger")
public class MangerController {

    @Autowired
    private MangerService mangerService;

    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String login(Manger manger, HttpSession session, Model model) {
        try {
            Manger manger_login = mangerService.manger_login(manger);
            //登录成功
            //储存用户信息
            session.setAttribute("manger", manger_login.getMangerName());
            //重定向到succes.jsp页面
            return "redirect:/manger/manger.jsp";
        } catch (Exception e) {
            e.printStackTrace();
            //登录失败
            //储存提示信息到request
            model.addAttribute("longin_error", "用户名或密码错误!");
            //转发到登陆页面
            return "/manger/manger_login.jsp";
        }
    }


    @RequestMapping("/findAllUser")
    public String FindAllUser(Model model) {

        List<User> users = mangerService.findAll();
        //将list存入request域
        model.addAttribute("users", users);
        //转发到list.jsp
        return "/manger/allUsers.jsp";
    }

    @RequestMapping("/updateUser")
    public String UpdateUser(User user, String flag, Model model, HttpServletRequest request) {

        userService.updateUser(user);

        if (flag.equals("reg_success")) {
            //用户更新
            model.addAttribute("users", user);
            //移除标志flag
            request.removeAttribute("flag");
            return "/user/userInformation.jsp";
        } else {
            //管理员更新
            //跳转到查询所有的方法
            return "/manger/findAllUser";
            //response.sendRedirect(request.getContextPath() + "/userListServlet");
        }
    }

    @RequestMapping("/addUser")
    public String AddUser(User user){
        //调用Service保存
        mangerService.AddUser(user);
        //跳转(重定向)到userListServle
        return "/manger/findAllUser";
    }

    @RequestMapping("/findUserById")
    public String FindUserById(String id, Model model,String flag){

        User user = userService.findUserById(id);

        //将user存入request
        model.addAttribute("user",user);
        //request.setAttribute("user",user);

        //将标识传递
        model.addAttribute("flag",flag);
        //request.setAttribute("flag",flag);

        //转发到update.jsp
        return "/manger/update.jsp";
        //request.getRequestDispatcher("/update.jsp").forward(request,response)
    }

    @RequestMapping("/findAllFood")
    public String FindAllFood(Model model){
        List<Food> foods = mangerService.findAllFood();
        //存入request域中
        model.addAttribute("foods",foods);
        //转发到food.jsp
        return "/manger/allFoods.jsp";
    }

    @RequestMapping("/addFood")
    public String AddFood(Food foods){
        mangerService.AddFood(foods);
        //跳转(重定向)到查询所有食物
        return "/manger/findAllFood";
    }

    @RequestMapping("/findFoodById")
    public String FindFoodById(String id, Model model){
        Food foods = mangerService.findFoodById(id);
        //将user存入request
        model.addAttribute("foods",foods);
        //转发到update.jsp
        return "/manger/updateFood.jsp";
    }

    @RequestMapping("/updateFood")
    public String UpdateFood(Food food){
        mangerService.updateFood(food);
        return "/manger/findAllFood";
    }

    @RequestMapping("/deleteFood")
    public String DeleteFood(String id){
        mangerService.deleteFood(id);
        //跳转(重定向)到checkFood
        return "/manger/findAllFood";
    }
}    

4.service层

1.service接口

public interface MangerService {
    //查询所有用户信息
    public List<User> findAll();

    //保存用户对象User
    void AddUser(User user);

    //实现管理员登陆
    public Manger manger_login(Manger manger);

    //查询菜品信息
    List<Food> findAllFood();

    //添加食品
    void AddFood(Food foods);

    Food findFoodById(String id);

    void updateFood(Food food);

    void deleteFood(String id);

}

2.service接口实现

@Service
public class MangerServiceImpl implements MangerService {

    @Autowired
    private MangerMapper mangerMapper;

    @Override
    public List<User> findAll() {
        List<User> userList = mangerMapper.findAll();
        //封装userList中的每一个user的food数据
        for (User user : userList) {
            //获得user的id
            int id = user.getId();
            //将user的id作为参数,查询对应food的集合数据
            List<Food> foods =mangerMapper.findFoodsById(id);
            user.setFoods(foods);
        }
        return userList;
    }

    @Override
    public void AddUser(User user) {
        mangerMapper.addUser(user);
    }

    @Override
    public Manger manger_login(Manger manger) {
        return mangerMapper.manger_login(manger);
    }

    @Override
    public List<Food> findAllFood() {
        return mangerMapper.findAllFood();
    }

    @Override
    public void AddFood(Food foods) {
        mangerMapper.addFood(foods);
    }

    @Override
    public Food findFoodById(String id) {
        return mangerMapper.findFoodById(Integer.parseInt(id));
    }

    @Override
    public void updateFood(Food food) {
        mangerMapper.updateFood(food);
    }

    @Override
    public void deleteFood(String id) {
        mangerMapper.deleteFoodById(Integer.parseInt(id));
    }

}

5.mapper层

public interface MangerMapper {

    //查询所有用户
    public List<User> findAll();

    //实现登录
    Manger manger_login(Manger manger);

    void addUser(User user);

    //查询所有菜品
    List<Food> findAllFood();

    void addFood(Food foods);

    Food findFoodById(int id);

    void updateFood(Food food);

    void deleteFoodById(int id);

    //查中间表
    List<Food> findFoodsById(int id);
}
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JAVAWEB实现增删查改是一个常见的需求,可以按照以下步骤进行: 1. 创建数据库表 首先,需要在数据库中创建一个表,用于存储要管理的信息。例如,可以创建一个图书信息表,包括图书ID、图书名称、作者、价格等字段。 2. 创建JavaBean类 创建一个JavaBean类,用于表示要管理的信息。例如,可以创建一个Book类,包括图书ID、图书名称、作者、价格等属性,并提供对应的getter和setter方法。 3. 创建DAO类 创建一个DAO类,用于封装对数据库的操作。例如,可以创建一个BookDao类,包括增加、删除、修改、查询等方法。其中,增加、删除、修改方法对应数据库的增、删、改操作,查询方法对应数据库的查询操作。 4. 创建Servlet类 创建一个Servlet类,用于处理用户请求。例如,可以创建一个BookServlet类,包括处理增加、删除、修改、查询等请求的方法。在这些方法中,需要调用DAO类中对应的方法来对数据库进行操作,并将结果返回给用户。 5. 创建JSP页面 创建一个JSP页面,用于展示查询结果和接收用户输入。例如,可以创建一个book.jsp页面,包括查询表单、查询结果列表、增加、删除、修改按钮等。 6. 配置Web.xml文件 将Servlet类和JSP页面配置到Web.xml文件中。例如,可以将BookServlet类配置为一个Servlet,将book.jsp配置为一个JSP页面。 以上就是JAVAWEB实现增删查改的基本步骤。在实际项目中,需要根据具体需求进行完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值