我会详细讲解“springmvc+spring+mybatis实现用户登录功能(上)”的完整攻略。
首先,我们需要明确一下这个项目所需的技术栈:
- Spring MVC:用于实现Web应用程序的MVC架构,处理用户请求和响应的分发和转发。
- Spring:用于管理和组织应用中的Bean,提供依赖注入和面向切面编程等功能。
- MyBatis:用于操作数据库,提供了较为灵活和高效的SQL语句编写方法。
接下来,我们就要开始实现用户登录功能的过程了。
步骤一:创建项目
在开始之前,我们需要先创建一个新的Maven项目,选择适合自己的IDE,在这里我选用的是IntelliJ IDEA。
接下来,我们需要添加项目所需的依赖,这里我仅列出关键的依赖:
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<!-- JDBC 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
步骤二:定义用户实体类
我们需要先定义一个用户实体类,这个类用于存储用户的基本信息。代码如下:
public class User {
private Integer id; // 用户ID
private String username; // 用户名
private String password; // 密码
// 省略了getter和setter方法
}
步骤三:配置数据源和MyBatis
我们需要在applicationContext.xml
中配置数据源和MyBatis,这里以MySQL数据库为例。代码如下:
<!-- 数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- MyBatis 配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.example.entity"/>
<property name="mapperLocations" value="classpath*:mapper/*.xml"/>
</bean>
<!-- Mapper 接口扫描 -->
<mybatis:scan base-package="com.example.mapper"/>
步骤四:编写Mapper接口和Mapper.xml
我们需要在mapper
包下编写Mapper接口和Mapper.xml文件,用于定义与数据库交互的方法和SQL语句。我们先定义一个UserMapper
的接口,代码如下:
public interface UserMapper {
int insert(User record);
User selectByPrimaryKey(Integer id);
User selectByUsername(String username);
}
然后,我们需要在mapper
目录下创建UserMapper.xml
文件,并编写SQL语句。代码如下:
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="userMap" type="com.example.entity.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
</resultMap>
<insert id="insert" parameterType="com.example.entity.User">
INSERT INTO user (username, password)
VALUES (#{username}, #{password})
</insert>
<select id="selectByPrimaryKey" parameterType="int" resultMap="userMap">
SELECT *
FROM user
WHERE id = #{id}
</select>
<select id="selectByUsername" parameterType="java.lang.String" resultMap="userMap">
SELECT *
FROM user
WHERE username = #{username}
</select>
</mapper>
步骤五:编写Service和Controller
我们需要编写Service和Controller代码,分别处理业务逻辑和Web请求。首先定义一个UserService接口,代码如下:
public interface UserService {
boolean login(String username, String password);
}
然后,我们需要创建UserService的实现类,代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean login(String username, String password) {
User user = userMapper.selectByUsername(username);
if (user != null && user.getPassword().equals(password)) {
return true;
}
return false;
}
}
最后,我们需要创建一个UserController类,代码如下:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
// 跳转到登录页面
@GetMapping("/login")
public String login() {
return "login";
}
// 登录请求处理
@PostMapping("/login")
@ResponseBody
public String login(@RequestParam String username, @RequestParam String password) {
boolean result = userService.login(username, password);
if (result) {
return "登录成功";
} else {
return "登录失败";
}
}
}
示例一
现在我们已经完成了项目的基本功能实现,接下来我们将启动应用程序并进行测试。
我们先在/WEB-INF/jsp
目录下创建一个login.jsp
文件,代码如下:
<form action="${pageContext.request.contextPath}/user/login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
然后,我们启动应用程序,并在浏览器中输入http://localhost:8080/user/login
。我们将会看到一个登录页面,我们可以在此处输入用户名和密码进行登录。
在登录成功后,我们将会看到一个“登录成功”的提示信息。
示例一就到这里结束了。
示例二
接下来我们将展示第二个示例,我们将通过JUnit测试验证登录功能是否能正常工作。
首先,我们需要在src/test/java
目录下创建一个测试类UserControllerTest
,代码如下:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"classpath:spring/applicationContext.xml", "file:src/main/webapp/WEB-INF/springmvc-servlet.xml"})
public class UserControllerTest {
private MockMvc mvc;
@Autowired
private WebApplicationContext wac;
@Autowired
private UserService userService;
@Before
public void setUp() {
mvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void testLogin() {
// 登录成功
String username = "user1";
String password = "password1";
boolean result1 = userService.login(username, password);
assertTrue(result1);
// 登录失败
username = "user1";
password = "not_the_password";
boolean result2 = userService.login(username, password);
assertFalse(result2);
}
}
我们在该测试类中使用MockMvc进行测试,检验登录请求是否正常。在这个示例代码中,我们分别测试了正确和错误的登录凭证的情况。
示例二也到这里结束了。
好了,这就是“springmvc+spring+mybatis实现用户登录功能(上)”的完整攻略啦。期望对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc+spring+mybatis实现用户登录功能(上) - Python技术站