目錄
案例說明
一、創(chuàng)建MavenWeb項目
二、導(dǎo)入相關(guān)依賴
1、導(dǎo)入maven編譯插件
2、導(dǎo)入tomacat插件
3、導(dǎo)入servlet依賴
4、導(dǎo)入druid數(shù)據(jù)庫連接池依賴
5、導(dǎo)入mysql依賴
6、導(dǎo)入mybatis依賴
7、導(dǎo)入junit依賴
8、導(dǎo)入mybatis核心配置文件mybatis-config.xml
三、使用Mapper代理
導(dǎo)入MySql映射文件 XXXMapper.xml
?創(chuàng)建mapper接口
四、IDEA配置tomcat
五、創(chuàng)建數(shù)據(jù)庫
六、開始編碼
1、創(chuàng)建實體類User
?2、在mapper接口中定義用戶操作
3、在mapper接口對應(yīng)的SQL映射文件創(chuàng)建SQL語句
4、創(chuàng)建一個工具類
5、創(chuàng)建servlet包,處理登陸注冊的業(yè)務(wù)邏輯
登陸操作:
注冊操作:
七、項目展示
個人博客歡迎訪問 ---? 猿客棧
案例說明
完成用戶登錄和用戶注冊邏輯,與后端數(shù)據(jù)庫聯(lián)系
一、創(chuàng)建MavenWeb項目
點(diǎn)擊新建模塊,勾選使用骨架快速搭建。
二、導(dǎo)入相關(guān)依賴
在pom.xml文件中刪除無用的代碼,導(dǎo)入項目需要的依賴。設(shè)置打包方式位war包
1、導(dǎo)入maven編譯插件
?聲明編譯的jdk版本,如果不導(dǎo)入插件,會報不支持發(fā)行版本5的錯誤
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
2、導(dǎo)入tomacat插件
使maven可以直接編譯tomcat的項目插件,選擇性安裝,只能支持到tomcat7
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>80</port>
</configuration>
</plugin>
3、導(dǎo)入servlet依賴
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
4、導(dǎo)入druid數(shù)據(jù)庫連接池依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
5、導(dǎo)入mysql依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
6、導(dǎo)入mybatis依賴
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
7、導(dǎo)入junit依賴
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
</dependencies>
8、導(dǎo)入mybatis核心配置文件mybatis-config.xml
放入resources資源文件夾下。
<?xml version="1.0" encoding="UTF-8" ?>
<!--Mybatis核心配置文件-->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
使用typeAliases再進(jìn)行包掃描,給該包下的所有實體類起別名,直接使用不區(qū)分大小寫的類名
例如SQL映射文件下的返回值類型可以直接使用user,而不是com.itheima.pojo.user
-->
<typeAliases>
<package name="com.itheima.pojo"/>
</typeAliases>
<!--environments:配置數(shù)據(jù)庫連接環(huán)境信息,可以配置多個environment,通過default屬性切換不同的environment-->
<environments default="development">
<environment id="development">
<!--事物的管理方式-->
<transactionManager type="JDBC"/>
<!--數(shù)據(jù)庫連接池,默認(rèn)為POOLED-->
<dataSource type="POOLED">
<!--數(shù)據(jù)庫連接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/users?useSSL=false&userServerPrepStmts=true"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--加載SQL映射文件,使用包掃描-->
<package name="com.itheima.mapper"/>
</mappers>
</configuration>
三、使用Mapper代理
導(dǎo)入MySql映射文件 XXXMapper.xml
文件名稱為(操作的pojo實體類對象名稱+Mapper).xml? 放入resources資源文件夾下。
<?xml version="1.0" encoding="UTF-8" ?>
<!--SQL映射文件-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper根標(biāo)簽 namespace必須要指定名稱-->
<mapper namespace="com.itheima.mapper.UserMapper">
</mapper>
?創(chuàng)建mapper接口
在java文件夾下創(chuàng)建一個mapper包,包下創(chuàng)建與SQL映射文件同名的mapper接口,在接口中聲明操作數(shù)據(jù)庫的方法,可以安裝MyBatisX插件,實現(xiàn)方法與映射文件間的快速跳轉(zhuǎn)。
?同時要在resource文件夾下創(chuàng)建一個與mapper接口包名 同名的文件夾,將SQL映射文件放入。
?完成Mapper代理
四、IDEA配置tomcat
在?Web核心 中有明確說明,注意要配置Deployment,導(dǎo)入war包。
五、創(chuàng)建數(shù)據(jù)庫
id user_name password tel
六、開始編碼
1、創(chuàng)建實體類User
public class User {
private Integer id;
private String username;
private String password;
private String tel;
public User() {
}
public User(String username, String password,String tel) {
this.username = username;
this.password = password;
this.tel = tel;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
?2、在mapper接口中定義用戶操作
public interface UserMapper {
//根據(jù)用戶名和密碼查詢用戶對象
User select(@Param("username") String username, @Param("password") String password);
//注冊用戶
int add(User user);
//根據(jù)用戶名查找是否存在
User selectByName(@Param("username") String username);
}
3、在mapper接口對應(yīng)的SQL映射文件創(chuàng)建SQL語句
<?xml version="1.0" encoding="UTF-8" ?>
<!--SQL映射文件-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper根標(biāo)簽 namespace必須要指定名稱-->
<mapper namespace="com.itheima.mapper.UserMapper">
<resultMap id="userResultMap" type="user">
<!--resultMap有兩個常用屬性 id:設(shè)置主鍵字段的映射 result:設(shè)置一般字段的映射-->
<!--column表的列名 property實體類的屬性名-->
<result column="user_name" property="username"></result>
</resultMap>
<!--根據(jù)用戶名和密碼登錄-->
<select id="select" resultMap="userResultMap">
select * from login where user_name=#{username} and password=#{password};
</select>
<!--用戶注冊-->
<insert id="add" >
insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
</insert>
<!--根據(jù)用戶名判斷賬戶是否存在-->
<select id="selectByName" resultMap="userResultMap">
select * from login where user_name=#{username};
</select>
</mapper>
4、創(chuàng)建一個工具類
由于整個的會話工廠只需要一個,避免代碼冗余,創(chuàng)建會話工廠工具類用來得到會話工廠。
public class SqlSessionFactoryUtils {
//靜態(tài)代碼塊隨著類的創(chuàng)建而創(chuàng)建,且只創(chuàng)建一次,由于會話工廠只需要一個,所以用靜態(tài)代碼塊
//登錄與注冊的代碼邏輯相同,采用工具類獲取會話工廠,避免冗余
private static SqlSessionFactory sqlSessionFactory;
//靜態(tài)代碼塊不能拋異常,使用異常捕獲
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
5、創(chuàng)建servlet包,處理登陸注冊的業(yè)務(wù)邏輯
登陸操作:
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1、接收用戶名和密碼
String username = req.getParameter("username");
String password = req.getParameter("password");
//2、使用Mybatis操作數(shù)據(jù)庫
//1、加載mybatis核心配置文件獲取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
//2、開啟SqlSession對象
//SqlSession不能寫在工具類,因為SqlSession代表用戶與數(shù)據(jù)庫的連接,如果放在工具類,則所有用戶共用同一個連接
//這樣無法管理事務(wù),使多個用戶之間產(chǎn)生影響
SqlSession sqlSession = sqlSessionFactory.openSession();
//3、獲取Mapper接口的代理對象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//4、執(zhí)行接口方法(執(zhí)行SQL語句)
User user = userMapper.select(username,password);
//5、釋放資源
sqlSession.close();
//3、查看輸出結(jié)果響應(yīng)給用戶
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (user != null){
writer.write("<h1>登陸成功</h1>");
}else {
writer.write("<h1>登錄失敗</h1>");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
注冊操作:
@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解決post獲取請求數(shù)據(jù)中文亂碼問題
req.setCharacterEncoding("UTF-8");
//1、接收用戶名、密碼和手機(jī)號
String username = req.getParameter("username");
String password = req.getParameter("password");
String tel = req.getParameter("tel");
User user1 = new User(username,password,tel);
//2、使用Mybatis操作數(shù)據(jù)庫
//1、加載mybatis核心配置文件獲取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
//2、開啟SqlSession對象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3、獲取Mapper接口的代理對象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//4、執(zhí)行接口方法(執(zhí)行SQL語句)
//先檢查賬戶是否被注冊
int i = 0;
User user = userMapper.selectByName(username);
if (user == null){
i = userMapper.add(user1);
sqlSession.commit();
}
//5、釋放資源
sqlSession.close();
//3、查看輸出結(jié)果響應(yīng)給用戶
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (i > 0){
writer.write("<h1>注冊成功</h1>");
}else {
writer.write("<h1>注冊失敗,賬戶已存在</h1>");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
七、項目展示
?文章來源:http://www.zghlxwxcb.cn/news/detail-765377.html
需要前端資源請私信文章來源地址http://www.zghlxwxcb.cn/news/detail-765377.html
到了這里,關(guān)于JavaWeb核心、綜合案例(詳細(xì)!Web開發(fā)流程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!