1.1准备
web:网页
静态web(HTML):从网页中获取的数据始终不变
动态Web(Jsp,Servelt):可以从服务器动态的获取数据;
在Java中,动态Web资源开发的技术统称为JavaWeb;
Web应用程序就是提供浏览器服务支持的一些程序
我们需要把自己开发出来的Web程序放在 我们服务器的webAPPS目录下
静态web
html,htm,服务器会直接读取HTML的数据
缺点:
动态Web
1.IIS(微软)
2.Tomact(性能优良,非常的小,它是符合Web服务器最小的服务器,Apache)
3.weblogic
4.WebShare
思考?为什么要搭建JavaWeb环境
因为不管什么web资源,想要被计算机访问,都必须要与一个与之对应的网络通讯程序
1.下载tomcat:http://tomact.apache.org/
2.下在完成后,解压到任意一个目录下
3.bin目录是存放一些课执行文件,启动或关不
4.conf存放一些Tomact配置文件
5.lib存放服务器需要的Jar包
6.logs日志文件
7.temp:临时文件
8.webapps:存放网站和web项目的地方
9.work:Tomcat的工作目录
注意:不能关闭Tomact的DOS窗口,否则Tomact就停止了
通过localhost:8080访问
1.启动乱码问题(不影响操作)
conf/logging.properties中增加了一句java.util.logging.ConsoleHandler.encoding = UTF-8,导致在有些windows系统中出现中文乱码。修改方法:
2,JAVA_HOME配置是否成功,必须要这个名字
3,闪退问题
1.8080端口问题
在cof/server.xml配合文件配置了我么服务器相关一些服务,我们可以修改其内容,改tomact运行端口号
发布到:tomact-9.0
项目中必须要有一个Web-INF目录,其中必定有一个web.xml
使用IDEA搭建WEB开发环境
1.打开IDEA
2.新创一个Web项目
3.配置Tomcat服务器
4.配置好之后需要导包
HTTP:超文本传输协议
请求:
请求方式
请求参数
请求内容
响应:
常用值
200:ok
302:重定向
404:请求的文件不存在,路径写错了
500:服务器代码写错了,你的Java程序写错了
1.创建Servlet的两种方式
方式一:创建一个java文件,继承HttpServlet,重写里面的方法
public class Servlet3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
方式二:直接在idea里面创建一个servlet
public class Servlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}
}
2.配置web.web中的Servlet的映射mapping url;
ServletTest01
com.wang.demo.ServletTest01
ServletTest01
/test
注意:
ServletTest01
/test //这里记得一定要加“/",否则服务器会报错
3.启动tomact服务器
1.一般情况下,我们都会指向指定的一个URL,一个URL对应一个请求
2.通配问题
/*:不报错
/之后可以随便输,都能跳转到指定的页面
/*.do:会报错,不需要/
ServletTest01
*.do
do前面可以随便输,都可以跳转到指定的页面
将这个请求,转到另一个地址
比如我们需要跳转到百度,只需:response.sendRedirect(“https://www.baidu.com/”);
package com.wang.demo;
import java.io.IOException;
import java.io.PrintWriter;
public class ServletTest01 extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request,response);
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.sendRedirect("https://www.baidu.com/");
System.out.println("你好");
}
}
1.通过ServletContext实现数据共享
就是这一个Servlet可以获得另一个Servlet的信息
第一个Servlet需要:this.getServletContext();
context.setAttribute(“name”,name);
第二个需要:
String name = (String) context.getAttribute(“name”);
String name = (String) context.getAttribute(“name”);
package com.wang.servlet;
import javax.servlet.ServletContext;
import java.io.IOException;
@javax.servlet.annotation.WebServlet(name = "Servlet")
public class Servlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doGet(request,response);
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.setCharacterEncoding("utf-8");
ServletContext context = this.getServletContext();
String name="佩奇";
context.setAttribute("name",name);
response.getWriter().print("信息录入成功"+name);
}
}
package com.wang.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "Servlet2")
public class Servlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String name = (String) context.getAttribute("name");
response.setCharacterEncoding("utf-8");
response.getWriter().print("我收到的消息是"+name);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
注意:我们要防止乱码问题的产生,就要在Servlet中设置编码问题
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);
}
}
//响应到网页
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);
}
}