Servlet入门详细教程(你不得不知道的Servlet知识点)
“人生如一杯茶,不会苦一辈子,但要苦一阵子。”
你好,我是梦阳辰!和我一起学习起来吧!
文章目录
Java EE实质上是sun(oracle)公司为我们提供的强大的类库。
Java SE实质就是sun(oracle)公司提供的一套基础的类库。
Java EE是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用.随着WEB和EJB容器概念诞生,使得软件应用业开始担心SUN的伙伴们是否还在Java平台上不断推出翻新的标准框架,致使软件应用业的业务核心组件架构无所适从,从一直以来是否需要EJB的讨论声中说明了这种彷徨。
在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本.此次J2EE改名为Java EE,实际也反映出业界这种共同心声。
Java EE的核心是EJB3.0, 其提供了更兼便捷的企业级的应用框架。
1.什么是JavaSE?
Java的标准版本
sun公司为java程序员提供的一套基础类库。这套基础类库包括基础语法、面向对象、异常、IO、集合、反射、线程
目前JavaSE由Oracle公司维护。
2.什么是API?包括什么?
应用程序接口
API包括:源码、字节码、帮助文档
3.JavaSE的src、字节码、帮助文档在哪里?
JAVA_HOME\src.zip
JRE_HOME\lib\rt.jar
帮助文档,官网。
4.什么是JavaEE?
Java企业版
SUN公司为Java程序员准备另一套庞大的类库,帮助程序员完成企业级项目开发。
JavaEE规范是一个比较大的规范,JavaEE包括13个子规范(每一个子规范下其实还有其他的子规范)
JavaEE5规范下的子规范:
Servlet2.5
JDBC
JavaEE6规范下的子规范。
Servlet3.0
Tomcat服务器,其中Tomcat6实现了Servlet2.5规范,Tomcat实现了Servlet3.0规范。
5.JavaEE的源码、字节码、帮助文档在哪里?
系统架构分类
C/S
B/S
什么是C/S呢?
各种app。
优点:大部分数据都以集成到客户端软件中,只需要从服务器上传送少量数据即可。速度快。
升级麻烦。
什么是B/S呢?
客户端为浏览器。不需要安装特定的客户端。升级方便。
缺点:速度慢,体验差。
以后主要的研究方向。
BS架构访问过程
注意:Servlet接口由程序员实现,服务器来调用。
Servlet:是两个英语单词的合并,Serv表示服务器端,let表示小程序。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
知识引入:
1.Sun公司制定的JavaEE规范:Servlet规范
Servlet接口是Servlet规范中核心接口
接口注意:调用这是谁?实现者是谁?
public interface Servlet{//Servlet接口
void service();
}
2.JavaWeb程序员
JavaWeb编写服务器端小java程序的时候,不能随意编写,必须实现Servlet接口。
public class DeleteServlet implements Servlet{
public void service(){
System.out.println("连接数据库,成功...");
}
}
3.Tomcat服务器调用(自动调用)
WebServer Web服务器 ,Web Container
Web容器面向Servlet接口调用。
模拟Tomcat服务器
Tomcat服务器负责调用。2
作为Web程序员我们只要实现Servlet接口,并配置号.xml文件即可。
1.一个webapp只有一个web.xml文件。
web.xml文件主要配置请求路径和Servlet类名之间的绑定关系。
web.xml文件在Tomcat服务器启动阶段被解析。解析失败会导致webapp启动失败。web.xml文件中的标签不能随意编写。
在项目目录下必须有一个WEB-INF文件夹。并且在WEB-INF文件夹下必须有classes文件夹,lib文件夹和web.xml配置文件。
.class文件放在classes文件夹下。
实例:
编写Java程序,将编译生成的class文件放在classes目录下。
配置web.xml
注意对于xml配置文件的<url-pattern>中的路径不需要添加项目名。
但是对于Hello.html的文件的超链接需要在前面添加项目名,因为超链接可能
会转到其他项目中,也可能转到其他网站,所以需要在其前面添加项目名称。
java代码:(其它类似)
package Part1;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MengYangChenWorkers implements Servlet {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.print("<html>");
out.print("<head>");
out.print("<title>员工信息</title>");
out.print("</head>");
out.print("<body>");
out.print("<h2 align=\'center\'>员工列表</h2>");
out.print("<hr width=\'60%\'>");
out.print("<table border=\'1\' align=\'center\' width=\'50%\'>");
out.print("<tr align=\'center\'>");
out.print("<th>编号</th>");
out.print("<th>姓名</th>");
out.print("<th>性别</th>");
out.print("<th>部门</th>");
out.print("<th>生日</th>");
out.print("</tr>");
//JDBC
Connection conn=null;
PreparedStatement ps =null;
ResultSet rs= null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/newdata","root","0910");
String sql="select num,name,sex,classnum,birthday from t_student";
ps=conn.prepareStatement(sql)