案例
用tomcat配置
首先要配置相应的环境
1、创建数据库,在IDEA中连接数据库,配置数据源
2、在pom中导入对应的依赖(例:mybatis,mysql,servlet,lombok)
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
3、在resources资源目录中创建配置文件,直接在官网中复制即可
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
示例:
<?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>
<typeAliases>
<package name="com.wang.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <com.wang.mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
<package name="com.wang.mapper"/>
</mappers>
</configuration>
使用了typeAliases创建别名,默认为类名,不再区分大小写
下面的mapper使用了package包扫描的方式
4、创建mapper包,在里面创建接口,
例如
public interface UserMapper {
@Select("select * from tb_user where username=#{username} and password=#{password}")
User select(@Param("username") String username,@Param("password") String password);
}
5、配置对应的xml实现类,首先去官网复制对应的配置信息
修改namespace的路径为自己mapper里面的接口
这里的映射文件的路径要和Java源代码中的路径相同
<?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.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
6、创建Servlet类,使用@WebServlet注解来实现请求的接收路径,接下来处理请求即可
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 给输出的值设置编码方法,放置乱码
System.out.println("11111");
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("username"+username+"\t password"+password);
// 获取sqlsessionfactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User select = userMapper.select(username, password);
sqlSession.close();
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (select!=null){
// 登陆成功
writer.write("登录成功");
}else {
// 登录失败
writer.write("登录失败");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
笔记:
查询单个:
条件查询
用where和if配合实现动态sql
单条件的动态查询
主键返回
可以使用set实现修改值的时候的动态sql
动态,一次性删除多个
open:从什么开始,在开头拼接
close:在尾部拼接
注解开发:
http请求
各种状态码
Servlet的三个方法
Servlet中的五个方法
在init中的config要提升作用域,这样,在getServletConfig()方法中才能返回一个ServletConfig对象
Servlet的匹配规则
优先级了解即可
使用XML配置路径(这种方法是老版本的,现在用注解实现)
request
获取请求头:
request的三种通用的获取信息的方法
处理POST请求的中文乱码问题,(只对POST请求有效)
解决get的乱码
这种方法对get和post都有用
请求转发
转发的特点
response实现重定向
重定向的特点
response的传递的响应信息
response重定向和request转发的区别比较
路径要不要加虚拟目录
重定向的两种方式,以及通过动态获取当前的虚拟目录实现重定向
相应字节数据
利用commons-io包提供的方法,简化拷贝操作
JSP
El表达式
JSTL
foeach
会话技术
一次会话中多次请求之间的数据共享
Cookie,session
cookie发送cookie时,由于是http协议,tomcat自动加上响应头
再次发送请求的时候,会自动添加请求头
Cookie存活时间
以秒为单位
默认不支持中文,使用utf-8转码后在发送,使用的时候再转回来就行了
Session
Session是基于Cookie实现的,Session再保存信息时,会默认给浏览器发送一个Cookie,来唯一标识这个用户浏览器,下次这个浏览器再次访问的时候,服务器会获取里面的Cookie,找到这个唯一的标识,然后就可以在自己的服务器中找到对应的Session
钝化,在服务器正常关闭之后,tomcat会自动将Session写入到硬盘中保存起来,下次服务器再次启动的时候,会重新读取硬盘中的数据,重新加载到Session中
Cookie和Session的区别
Filter过滤器
Filter执行顺序
拦截方法
执行顺序
按照过滤器类名的自然排序进行排列的
放行的时候,要把相关的资源也放行,例如CSS,Js都要放行
代码示例
Listener监听器
AJAX
同步和异步
快速入门
案例:
后台请求:
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
// 获取xmlhttp
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
// 发送请求,可以使用get请求也可以使用post请求,这里的路径要使用请求的绝对路径
xmlhttp.open("GET","http://localhost:8080/a/ajax");
xmlhttp.send();
// 接收返回的数据
xmlhttp.onreadystatechange = function (){
// 验证状态是否正确
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
alert(xmlhttp.responseText);
}
}
</script>
</body>
</html>
由于是get请求,所以这里采用的是字符串拼接的方式
Axios快速入门
需要下载这个JS文件
使用别名,可以简化书写
JSON字符串,可以和Java对象相互转换
实现JSON和Java对象的相互转换
设置字符编码
由于接收的是JSON字符串,所以,不能用常规的request..getParameter("name")来接收数据了,需要用接收字符数据的方法来接收
Vue快速入门
常用指令
双向绑定
事件绑定
两种使用方式,可以使用v-on:也可以使用@
示例
生命周期
使用Vue优化代码
Element基于Vue2.0的一个组件