JavaWeb
Javaweb之后将不再需要main,因为有了servlet
写好的HTML页面怎么在其它的电脑中显示/打开?
在没有任何技术的情况下:将文件复制到另一个电脑下去查看
应用/程序
tomcat/tom猫/web服务器/应用服务器等等
使用Java开发的,因此依赖于jdk
- 一个应用只能使用一个端口
tomcat目录结构
bin:都是存放、启动、停止等操作命令的。
conf:配置文件目录
lib : 存放jar包的目录
logs : 存放日志文件
temp : 存放临时文件
webapps : 存放web应用的目录。存放项目的目录 ROOT目录为默认打开的项目
work : 服务器工作目录 : .class/.java
动态网页技术
JavaEE最主要最核心的两个技术: Servlet、JSP(Java Server Page)
Servlet只是一个特殊的类(但并不是工具类 )
- 创建一个普通的Class
- 继承HttpServlet
- 重写doGet、doPost方法
- 在Web.xml中配置(一对一对的)
<!-- 告诉tomcat 我有一个Servlet类,并且告诉它访问的名称是什么 -->
<!-- Servlet类的位置 -->
<servlet>
<!-- 这个名称随便写 -->
<servlet-name>aaa</servlet-name>
<servlet-class>com.rimi.servlet.HtmlServlet</servlet-class>
</servlet>
<!-- servlet的访问名称-->
<servlet-mapping>
<!-- 与对应的servlet类的name保持一致 -->
<servlet-name>aaa</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 访问: http://ip地址:端口号/项目名/
简单图解
JavaWeb结构
1、 BS:浏览器 和 服务器
2、 CS: 客户端 和 服务器
JavaEE常见状态码
- 404 未找到: 文件不存在、路径不对、名称不对
- 500 服务器异常: 代码出现Exception
- 200 请求成功*(如果时静态页面,系统会自动帮你缓存,状态码304)
200:一般看不见,在network中
304:
/**
* servlet类:继承HttpServlet
*/
public class HtmlServlet extends HttpServlet {
//需要重写doGet、doPost方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse re) throws ServletException, IOException {
System.out.println("执行doGet");
re.getWriter().append("hello world :::::"+System.currentTimeMillis()+new Date());
// int s = 2;
// System.out.println(s/0);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行doPost");
}
}
Http请求方式:get/post
get:在地址栏可以看到提交的数据(显示提交),安全性低,提交的数据长度有限制、速度快
post:在地址栏无法看到提交的数据(隐式提交),安全性高,提交的数据长度没有限制、速度慢
servlet 请求和相应
注意事项:
1、编码问题:代码无法执行可能是因为编码问题乱码(请求时编码,响应内容编码,响应时编码)
//修改相应的编码格式
//响应的编码格式
rep.setCharacterEncoding("utf-8");
//请求的编码格式
req.setCharacterEncoding("utf-8");
//响应的内容类型
rep.setContentType("text/html;charset=utf-8");
2、发送重定向问题:当我们想要登陆错误时重新返回登录页面时
//通过代码控制页面的跳转、切换
//发送重定向
//response.sendRedirect("http://www.baidu.com");
//回到登录页面
rep.sendRedirect("index.html");
3、return的作用:
a.返回值
b.跳出一个系统
//response.sendRedirect("http://www.baidu.com");
//回到登录页面
rep.sendRedirect("index.html");
3、return的作用:
a.返回值
b.跳出一个系统
当我们想在循环后不执行循环下面的代码,就使用return。