文章目录
1. 使用Mybatis
1.1创建Maven项目
步骤:右键单击->New Module->选中Maven即可
1.2 在pom.xml中导包
<dependencies>
<!-- mybatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--日志文件管理-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
1.3 创建数据库编写表
推荐使用Navicat,创建一个新的数据库,然后利用生成语句
create table students(
`id` int(10) primary key not null auto_increment,
`name` varchar(20) not null,
`age` varchar(2) not null
)
insert into students values(default, 'caoduanxi','22');
1.4 编写实体类
在maven项目的java包下创建package命名为pojo
,写入实体类
public class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
//省略了响应的set和get方法
}
1.5 创建及配置mybatis-config.xml
在Resources下创建mybatis-config.xml文件,配置内容如下
因为pom.xml中导入的是8.0.12的mysql,所以driver这里需要在中间加入cj
如果运行有报错时区的话,在url的尾部加上serverTimezone=UTC
<?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>
<environments default="default">
<environment id="default">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<!--配置数据库连接池属性-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/people?serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="******"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/studentMapper.xml"></mapper>
</mappers>
</configuration>
1.6 创建mapper.xml
在Resources下创建一个文件夹mapper,里面创建mapperStudent.xml,内容配置如下:
namespace是一个称谓,可以设置任意的,但是需要保证通过这个能够扎到selectAll这条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="org">
<select id="selectAll" resultType="pojo.Student">
select * from people
</select>
</mapper>
1.7 测试代码
public static void main(String[] args){
try {
//获取资源文件流
InputStream resource = Resources.getResourceAsStream("mybatis-config.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resource);
//生产SqlSession
SqlSession sqlSession = factory.openSession();
List<Student> list = sqlSession.selectList("org.selectAll");
for (Student student : list) {
System.out.println(student+" ");
}
sqlSession.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2. 使用Spring
单击右键,new Module,选择Spring默认就好,后面选项选择download
2.1 Spring
Spring主要的作用就是控制反转,控制的是对象的创建过程,反转的是创建对象以前是人为现在是Spring,作用:解耦,程序员不需要管理对象,只需要直接使用就好,但是需要在Spring容器中配置。
2.2 创建一个小示例
public class HelloWorld {
private String name;
public HelloWorld(){
System.out.println("construct a object");
}
public HelloWorld(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("注入名字");
this.name = name;
}
public void sayHello(){
System.out.println("Hello,"+this.name+",hello world!");
}
}
2.3 配置Spring容器托管该类的创建
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="helloWorld" class="HelloWorld">
<property name="name" value="任意内容"></property>
</bean>
</beans>
2.4 测试代码
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
HelloWorld bean = (HelloWorld)context.getBean("helloWorld");
bean.sayHello();
}
}
3. 使用SpringMVC
3.1 SpringMVC
与Spring的项目创建过程基本是一致的,只是需要选择MVC,建议直接使用Maven来创建,因为导包比较简单
SpringMVC的运行流程:
1.客户端提交请求到DispathcerServlet
2.由DispathcerServlet控制器寻找一个或多个的HandlerMapping,由其找到相应的处理请求的Controller
3.DispatcherServlet将请求提交给Controller
4.Controller调用业务逻辑处理之后返回ModelAndView给DispathcerServlet
5.DispatcherServlet寻找一个或多个的ViewResolver视图解析器,视图解析器负责找到ModelAndView指定的视图
6.视图负责将结果响应到客户端
3.2 导入包
3.3 创建项目几个.xml文件
首先是web.xml文件,其中是已经配置好的,只有其中的url-pattern
根据所需求的拦截进行修改
具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--添加一个编码器-->
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
</web-app>
此时可以配置tomcat服务器,启动,可以看到index.jsp加载的页面(注意需要在默认的index.jsp文件中写点内容,这样更加直观)
3.4 根据输入的url访问
在src下创建controller包,其中编写类:
@Controller
public class TestController {
@RequestMapping("/hello")
public String printHello(ModelMap modelMap){
modelMap.addAttribute("words","hello world!");
return "hello";
}
}
为了能够实现访问,需要在dispatcher-servlet.xml中设置,以便处理器能够处理这个请求。
添加了对controller包的扫秒,后面的是视图解析,将视图解析为web的内部资源,当我们的controller中返回return "hello"的时候会自动添加上前缀和后缀,这样可以直接找打需要跳转的jsp页面。
<?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:http="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="controller"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
3.5 hello.jsp
在jsp中,可以直接利用${words}取出controller中model中设置的值,也就是"hello world!"