JavaEE的用户例子

工具IDEA

创建maven项目的webapp文件

SQL数据文件

采用User表自己建。

具体操作:

###结构如下:
在这里插入图片描述

补充pom.xml文件:

   <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>
    <!-- 作用域使用provided -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <!-- 作用域使用provided -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <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.2</version>
    </dependency>

    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>5.2.0.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>
Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no

完善java文件:

UserControlle

package com.lky.controller;

import com.lky.entity.User;
import com.lky.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
@RequestMapping("login")
public class UserController {
    @Autowired
    UserService userService;
    @RequestMapping("/dologin")
    public String login(String username, String password, Map<String, Object> map, HttpSession session) {
        if (username == null || "".equals(username)) {
            map.put("error","用户名为空");
            return "index";
        }
        if (password == null || "".equals(password)) {
            map.put("error","密码为空");
            return "index";
        }
        User user = userService.getUser(username, password);
        if (user == null){
            map.put("error", "用户名或密码错误");
            return "index";
        }
        session.setAttribute("username", username);
        return "redirect:../loginsuccess.jsp";
    }
    @RequestMapping("/register")
    public String register() {
        return "register";
    }
    @RequestMapping("/doRegister")
    public String doRegister(String username, String password, Map<String, Object> map, HttpSession session) {
        if (username == null || "".equals(username)) {
            map.put("error","用户名为空");
            return "register";
        }
        if (password == null || "".equals(password)) {
            map.put("error","密码为空");
            return "register";
        }
        userService.insertUser(username, password);
        return "redirect:../index.jsp";
    }
}

User

package com.lky.entity;

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

UserMapper

package com.lky.mapper;

import com.lky.entity.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    // 查询指定用户名和密码的User
    User getUser(@Param("username") String username, @Param("password") String password);
    // 保存指定用户名和密码的user
    void saveUser(@Param("username") String username, @Param("password") String password);
}

UserService

package com.lky.service;
import com.lky.entity.User;
public interface UserService {
    User getUser(String username, String password);
    void insertUser(String username, String password);
}

UserServicelmpl

package com.lky.service.lmpl;

import com.lky.entity.User;
import com.lky.mapper.UserMapper;
import com.lky.service.UserService;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserServicelmpl implements UserService {
    @Autowired
    SqlSession sqlSession;
    @Override
    @Transactional(readOnly = true)
    public User getUser(String username, String password) {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUser(username, password);
        System.out.println(user);
        return user;
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public void insertUser(String username, String password) {
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.saveUser(username, password);
    }
}
链接
长方形
圆角长方形
菱形

配置xml文件:

UserMapper.xml

<?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.lky.mapper.UserMapper">

    <select id="getUser" resultType="com.lky.entity.User">
       select * from user where username=#{username} and password=#{password}
   </select>

    <insert id="saveUser">
       INSERT INTO user (username,password) VALUES (#{username}, #{password})
   </insert>
</mapper>

spring.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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
      https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- Spring容器作为父级容器要排除Controller标注的类,控制层的类交给SpringMVC的容器管理 -->
    <context:component-scan base-package="com.lky">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
        <property name="user" value="root"/>
        <property name="password" value="123456"/>
    </bean>

    <!-- 配置事务通知 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 扫描Spring容器中标注@Transaction注解的方法或类并加上事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- mybatis 和 spring进行整合的配置,有了以下的配置mybatis-config.xml就不需要了-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:com/lky/mapper/UserMapper.xml"/>
    </bean>

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>

</beans>

springmvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.lky" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>DispatcjerServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcjerServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

构造jsp文件

index.jsp

<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
<div class="login">
    <div class="title">XXX管理系统登录页面</div>
    <div class="box">
        <div class="innerBox">
            <form action="/login/dologin" method="post">
                <table>
                    <thead><tr><th colspan="2" >用户登录</th></tr></thead>
                    <tr><td align="right">用户:</td><td>
                        <input type="text" name="username"></td></tr>
                    <tr><td align="right">密码:</td><td>
                        <input type="password" name="password"></td></tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="submit" value="登录">
                            <input type="button" value="注册" onclick="register();">
                        </td>
                    </tr>
                </table>
            </form>
            <div class="error" style="padding-left: 25px;color: red">${error}</div>
        </div>
    </div>
</div>
<script type="text/javascript">
    function register() {
        window.location.href="/login/register";
    }
</script>
</body>
</html>

loginsuccess.jsp

<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
欢迎${username}回来
</body>
</html>

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="false" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div class="login">
    <div class="title">XXX管理系统注册页面</div>
    <div class="box">
        <div class="innerBox">
            <form action="/login/doRegister" method="post">
                <table>
                    <thead><tr><th colspan="2" >用户注册</th></tr></thead>
                    <tr><td align="right">用户:</td><td><input type="text" name="username"></td></tr>
                    <tr><td align="right">密码:</td><td><input type="password" name="password"></td></tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="submit" value="注册">
                        </td>
                    </tr>
                </table>
            </form>
            <div class="error" style="padding-left: 25px;color: red">${error}</div>
        </div>
    </div>
</div>
</body>
</html>
Mon 06 Mon 13 已完成 进行中 计划中 现有任务 Adding GANTT diagram functionality to mermaid
张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值