tomcat页面请求方式进行数据库操作,以及装转页面
主体是需要编写登录方式文件regex.html,展示regex页面,在此登录界面可以
增加一些其他功能的超链接,所谓的超链接后的页面,和编写登录功能的
方式基本相似
那我们就来说说如何编写登录界面,并且进行相关处理实行转页面
1.配置基本的文件,来实行连接数据库的操作
我们为了高效,简单的使用,把相关文件写成三份:
db.properties:写基本的配置所需的信息:driver,url,user,password
Prop.java:主要写调用db.properties的方法,代码如下
public void String getProperty(String name){
Properties p=new Properties();
p.load(Prop.class.getClassLoader().getResourceAsStream("db.properties"))
return p.getProperty(name);
在dao 层建立文件UserDao.java:建立连接数据库的方法getConn(),增删改查的方法
2.既然要对对象操作,那就需要建立对象类User.java:建立get/set方法等相关方法
3.当页面输入数据,那么我们就要对页面数据进行处理,因此,此时数据处理逻辑
就显得十分重要
数据的处理有controller层接受,并且调用相应的增删改查的方法,并且对结果是否
正确进行判断,并进行转页面。
这里会把方法写开,细分,每个主体负责一个方面的判断:首先我们需要在dao层建立一个
方法的接口,并继承。这里我用RegexDao和RegexDaoImpl 表示,此时dao层文件主要写的
增删查改的语句,然后调用UserDao文件中的方法,把sql语句的结果用Resultset接受判断
是否和数据库中的数据相同,然后根据需求写执行方法;
然后在service层进行接受dao层的结果,进行业务逻辑判断,没问题就执行RegexDaoImpl
中的方法,最后在controller层调用service层的方法,并运行,并根据结果返回不同界面
然后让我们从正常方向来盘点一下的方法的来历,首先我们可以看到在regex,html,
action后会接一个方法路径(这就像一个标志),这个和servlet中有相对应的一模一样的标志
在servlet中这个标志会导向controller层的某个方法具体文件,这时候可以看到
在controller层调用到这个方法,但是这个方法在写的呢,是在serveice,而service层
又继续调用dao层的具体增删查改的方法,这样执行对数据库的操作
总的来说:方法的传递由regex.html -->servlet-->controller-->service-->dao-->UserDao
Tomcat的编辑主体就是方法也就是功能的细致拆分,分为dao层,service层,以及controller层
然后在servlet根据的regex.html的标志进行决定调用哪个controller层的控制文件
MyBatis的简单使用逻辑顺序
相对而言,mybatis比Tomcat的逻辑相对清晰,文件量相对小很多,无需用到servlet方法进行控制
书写逻辑如下:
1.我们先来配置简单的数据库连接的部分,对于老套不变的db.properties文件不在赘述
那如何接受呢,难道还要搞两个文件的吗?唉,这时候mybatis的强大地方就体现出来了
建立xml文件,一般命名为mybatis-cfg.xml,在此文件中编写连接方式,代码如下:
<?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>
<properties resource="db.properties"/>
<environments default="dev">
<environment id="dev">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${pwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/kgc/dao/UserDao.xml"></mapper>
</mappers>
</configuration>
注明:environments中的enviroment环境可以配置很多,default表示默认执行的环境,与下id对应
所以environment可以在environemts配置多个,只需要改变default的值就成
此时这个文件是不是很像Tomcat里的UserDao.java文件,都有对数据库的连接,还有增删查改的方法
只不过在mybatis中他用mappers进行对应指向到一个专门写增删查改的文件:UserDao.xml
2.既然我们说到了UserDao.xml ,我们就看看UserDao里都写了什么
UserDao.xml使用mybatis的框架编写增删改查,并且用mapper和之前的mappers相对应,代码如下:
<?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="cn.kgc.dao.UserDao">
<select id="getUserByName" parameterType="java.lang.String"
resultType="cn.kgc.entity.User">
select * from person where username=#{name}
</select>
<insert id="addUser" parameterType="string">
insert into person(username,password)
values (#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="string">
update person set password=#{pwd}
where username=#{name}
</update>
<delete id="deleteUser" parameterType="string">
delete from person where username=#{username}
</delete>
<update id="createTable" parameterType="string">
create table person(
id_num int(4) primary key auto_increment,
username varchar (10),
password varchar (10)
)
</update>
<update id="dropTable" parameterType="string">
drop table person;
</update>
</mapper>
注明:开头mybatis.xml和UserDao.xml文件十分相似,只需改几个单词即可
3.这时候不知不觉间,我们已经把大头搞定了,下面就是调用和建立测试类的问题了
首先建立接口,接口类编写和UserDao方法id相同的方法名。这里有个用法:
为了明确多参数时,系统不知道其中的对应关系,这是就需要我们用特定的标志来让系统明白
谁和谁是一对,用@Params(名称)和#{名称}进行对应,代码如下:
public interface UserDao {
User getPasswordByName(String name);
void addUser(@Param("name")String name,
@Param("pwd")String pwd);
void updateUser(@Param("name")String name,
@Param("pwd")String pwd);
void deleteUser(String name);
void createTable();
void dropTable();
}
4.然后在接口里按ctrl+shift+t创建测试类:Test
public class UserDaoTest {
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory factory = builder.build(reader);
SqlSession session= factory.openSession(true);
public UserDaoTest() throws IOException {
}
@Test
public void getPasswordByName() {
session.getMapper(UserDao.class).getPasswordByName("静");
}
注明:建立builder 方法和对象工厂,并获得权限是通用的,其他只需要在继承的Test中‘
写下基本相同代码即可:session.getMapper(UserDao.class).对应的方法
5.最后当然需要建立一个User类
SSM
我没怎么觉得他比mybatis的优势在哪,如果是当项目需要的功能庞大下,会减少很多代码量
只需要搭建好框架,就能很好的完成编写,但是SSM的方法逻辑层级和Tomcat有的一拼,
最终的方法有好几个文件的共同配合完成,嘎嘎找方法最终的呈现位置,下期再写