1.handler
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Toast.makeText(MainActivity.this, "hehe", Toast.LENGTH_SHORT).show();
//几秒钟后 实现页面跳转
}
},5000);
Timer类的使用如下:
1.1创建Timer实例
timer = new Timer();
1.2定义要执行的任务 TimerTask
class MyTask extends TimerTask{
@Override
public void run() {
handler.sendEmptyMessage(1);
// Toast.makeText(MainActivity.this, "hehe", Toast.LENGTH_SHORT).show();
// System.out.println("aaaaaaaaaaaaaaaa");
}
}
1.3.安排任务
timer.schedule(new MyTask(),5000);
1.4取消任务
timer.cancel();
2.servlet
servlet是什么 servlet属于javaee规范里面的一个技术. servlet是运行在服务器上的小型java程序,servlet可以用来接收客户端请求并且给客户端一个响应.
servlet有什么用 servlet是用来开发动态网页的技术.
servlet怎么用
实现步骤
1.创建servlet实例
public class ServletDemo extends HttpServlet {
//doget用来处理客户端get请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
//如果客户端是post请求 这个方法就会执行
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
2.在web.xml中配置servlet 原理类似android中清单文件
<servlet>
<servlet-name>servlerDemo</servlet-name>
<servlet-class>com.itheima.demo1.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlerDemo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
配置文件的作用 :通过配置文件来找到我们要访问的servlet
3.servlet运行原理
4.servlet生命周期
生命周期:比如 人 花草树木
声明周期过程:1.当tomcat启动的时候servlet并没有创建
2.当访问servlet的时候 tomcat服务器把servlet创建 构造--->init()---->service方法
3.当tomcat关闭的时候servlet销毁.
service方法和doget & doPost关系
根据请求的方式不同,如果请求方式是get请求底层还是调用的doGet方法 如果是post请求底层调用post方法
5.servletConfig对象
//servletconfig 当servlet初始化的同时 tomcat容器又帮我们生成了一个servletconfig
ServletConfig servletConfig = getServletConfig();
//1.获取当前servlet名字
String servletName = servletConfig.getServletName();
System.out.println("name:"+servletName);
//2.获取初始化参数 ,jdbc--->有些数据不适合在程序中写死 把他写到配置文件中
String name = servletConfig.getInitParameter("name");
String pwd = servletConfig.getInitParameter("pwd");
System.out.println("---:"+name+"--pwd:"+pwd);
// DriverManager.getConnection("", name, pwd)
6.urlpattern的三种写法
[1]完全路径匹配 /demo
[2]任意路径匹配 /*
[3]扩展名匹配 *.do *.action
在实际开发中使用完全路径匹配.
7.servletContext对象
这个对象在javaee开发中也理解成是一个工具箱
//1.获取servletContext 对象
ServletContext servletContext = getServletContext();
//2.根据配置文件获取name和pwd
String name = servletContext.getInitParameter("name");
String pwd = servletContext.getInitParameter("pwd");
System.out.println("&&&name:"+name+"----"+pwd);
//3.类似android ---->Environment "/mnt/sdcard/info.txt"
String realPath = servletContext.getRealPath("fileUpload");
System.out.println("realpath:"+realPath);
//4.对外共享数据 假设这个servlet去数据库获取了一个数据
servletContext.setAttribute("test", "传智播客");
8.request对象
请求 :请求行 请求头 请求体 所有请求的信息被封装到了request对象
响应 :响应行 响应头 响应体 所有响应的信息被封装到了response对象
实现代码
1.html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/day04/servletRequestDemo" method="post">
用户名<input type="text" name="name"><br />
密码<input type="password" name="pwd"><br />
请选择性别:<br/>
男<input type="radio" name="sex" value="male">女<input type="radio" name="sex" value="female"><br/>
请选择喜欢水果:<br />
苹果<input type="checkbox" name="fruit" value="iphone">香蕉<input type="checkbox" name="fruit" value="banana">
西瓜<input type="checkbox" name="fruit" value="watermelon">
<input type="submit" /><input type="reset"/>
</form>
</body>
</html>
2.servlet代码
//1.客户端所有的请求都封装到了req对象
String method = req.getMethod();
System.out.println("method:"+method);
//2.获取用户名 参数和表单中的name属性对应
String name = req.getParameter("name");
//3.获取密码
String pwd = req.getParameter("pwd");
//4.获取性别
String sex = req.getParameter("sex");
System.out.println("name:"+name+"----"+pwd+"--"+sex);
//5.获取水果 在获取多个值的时候
String[] fruits = req.getParameterValues("fruit");
for (String fruit : fruits) {
System.out.println("fruit:"+fruit);
}
3.乱码问题
3.1 post方式解决乱码
//0.修改一下 request查询码表
request.setCharacterEncoding("utf-8"); 这个代码只针对post无效
//1获取用户名
String name = request.getParameter("name");
System.out.println("name:"+name);
3.2 get方式提交数据乱码
由于get提交数据是以组拼url地址的形式提交
http://localhost:8080/day04/?name="张三"& 要对特殊符号& 和中文进行url编码
//1获取用户名
String name = request.getParameter("name"); //iso-8859-1
String encode = URLEncoder.encode(name,"iso-8859-1");
String decode = URLDecoder.decode(encode, "utf-8");
System.out.println("name:"+decode);
9.response
response.setHeader("content-type", "text/html;charset=utf-8");
- response.getOutputStream().write("成功".getBytes("utf-8"));