Web:网页
静态Web (HTML):从网页中获取的数据始终不变
动态Web(JSP、Servlet):可以从服务器端动态的获取数据;
在Java中 , 动态Web资源开发的技术统称为 JavaWeb;
Web应用程序就是提供浏览器服务支持的一些程序
我们需要把自己开发出来的Web程序放在我们服务器的webapps目录下;
静态Web
html,htm , 服务器会直接读取HTML的数据;
缺点:
网页内容无法更新
一些简单手段可以让他动起来
主要特征:可以从服务端获取数据,Web界面因人而变
优点 :
可以实现真正用户交互
可以从服务端保证每个用户有自己的空间
增强了用户体验性
PHP
ASP : 微软 IIS
JSP / Servlet : SUN 解决 B/S 架构
。。。。。。
1.IIS (微软)
2.Tomcat (性能优良,非常的小,他是符合Web服务器最小的服务器,Apache)
3.WebLogic
4.WebShare
理由:因为不管什么Web资源,想要被计算机访问 , 都必须要有一个与之对应的网络通信程序。
百度经验有详细的教程,可以详细查看。
HTTP :超文本传输协议
请求:
请求方式
请求参数
请求内容
响应:
常用值:
200 : OK
302 :重定向
404 :请求的文件不存在 , 路径写错了
500 :服务器代码写错了,你的 Java程序有问题
servlet是sun公司提供的一门用于开发动态web资源的技术。
sun公司在是api中提供了一个servlet接口,用户若想用若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:1. 编写一个Java类,实现servlet接口。
2.把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet
1.一般情况下我们都会指定一个URL,一个URL对应一个请求
2.通配问题
/*:不报错
*.do
将这个请求,转换到另一个地址;
比如我们请求 http://localhost:8080/servlet01/dasdasdasda/aaaa.do 他会跳转到百度首页;
//通过响应对象重定向页面
resp.sendRedirect("404.jsp");
web容器在启动时,它会为每个web应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
多个servlet通过ServletContext对象实现数据共享
获取web应用的初始化参数
用ServletContext实现请求转发
利用ServletContext对象读取资源文件
通过servletcontext对象实现数据共享
1.新建一个properties文件
driver=com.mysql.jdbc.Driver
username=root
password=123456
url=jdbc:mysql://localhost:3306/smbms
2.编写servlet类
package com.kuang.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
//读取properties配置文件
public class ServletDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//读取配置文件
//1.获得配置文件的路径
String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/resources/database.properties");
System.out.println("取得的路径为:"+realPath);
Properties properties = new Properties();
FileInputStream is = new FileInputStream(realPath);
properties.load(is);//把文件流加载到配置文件的对象中;
String driver = properties.getProperty("driver");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
String url = properties.getProperty("url");
//响应到网页
resp.getWriter().println(driver);
resp.getWriter().println(username);
resp.getWriter().println(password);
resp.getWriter().println(url);
//=======================================
System.out.println(driver);
System.out.println(username);
System.out.println(password);
System.out.println(url);
}
}
3.配置web.xml
Demo03
com.kuang.servlet.ServletDemo03
Demo03
/q3
4.访问查看
localhost:8080/demo02/q3
5.项目结构
package com.kuang.servlet;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Map;
//验证码
public class ServletDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//resp.getWriter().println(newRandom());
//自动刷新网页
resp.setHeader("refresh","2");
//验证码是一个图片 , 我们需要制作一个图片
BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_3BYTE_BGR);
//图片写入一些东西
Graphics2D graphics = image.createGraphics();
graphics.setColor(Color.red);
String num = String.valueOf(newRandom());
graphics.drawString(num,10,10);
//想办法让浏览器知道我们给的是一张图片
resp.setContentType("image/jpg");
//让网站去打开图片
ImageIO.write(image,"jpg",resp.getOutputStream());
}
//生成随机数
public int newRandom(){
int num = (int)(Math.random()*9+1)*100000;
return num;
}
/*
@Test
public void test(){
ServletDemo04 servletDemo04 = new ServletDemo04();
for (int j = 0; j < 100; j++) {
int i = servletDemo04.newRandom();
System.out.println(i);
}
}
*/
}