JSP+Servlet+JDBC的开发算得上是Java Web开发最传统的模式吧,一切从Servlet开始。在开始之前,还是先简单说下Web应用。
针对web程序,各大服务器统一了一种标准:最外层一个目录(此web应用的名称),该目录下面有两个目录(META-INF和WEB-INF)和一个文件index.jsp(其实这个文件有没有无所谓),META-INF下面有一个文件(据说是用来生成jar包用的,没有什么看到到的效果和用处,初学完全可以不理会),接下来非常重要:WEB-INF下面有两个目录(classes和lib)和一个文件web.xml。这两个目录和该文件非常重要,其中classes是用来存放.class文件,lib下面存放一些程序用到的jar包,web.xml是配置文件。
接着在开源的世界当中,诞生了很多围绕Java web开发的框架。但是我们始终要培养并坚持一种好的编程思想,因为万变不离其宗,这些框架也是在这些好的思想之下诞生的。本人现在也没怎么学习,只是稍微了解一点,到时候再慢慢来。
好了,话不多说,从HelloWorldServlet开始。
以下是第一个Servlet程序的主要代码
---------------------HelloWorldServlet.java---------------------------------------
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorldServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<html><head><title></title></head><body>你好Hello World;</body></html>");
out.flush();
out.close();
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
--------------------------------index.jsp----------------------------------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>HelloWorldServlet</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action=/HelloWorldServlet/abcd method=get>
<input type=text name="test">
<input type=submit value="submit">
</form>
<form action=abcd method=get>
<input type=text name="test">
<input type=submit value="submit">
</form>
<form action=HelloWorldServlet/cccc method=get>
<input type=text name="test">
<input type=submit value="submit">
</form>
<form action=/HelloWorldServlet/HelloWorldServlet/cccc method=get>
<input type=text name="test">
<input type=submit value="submit">
</form>
</body>
</html>
------------------------------------------web.xml-------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>MyFirstServlet</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyFirstServlet</servlet-name>
<url-pattern>/HelloWorldServlet/cccc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyFirstServlet</servlet-name>
<url-pattern>/abcd</url-pattern>
</servlet-mapping>
</web-app>
下面做一些简单介绍和解释。
Servlet是一种服务器端的Java应用程序, 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet工作模式如下:1、客户端发送请求至服务器2、服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器3、服务器将响应返回客户端
后来出现的JavaServer Pages(JSP)技术实现普通静态HTML和动态HTML混合编码的技术,这项技术过几天再学学基础。
要创建一个HttpServlet就要扩展HttpServlet类,该类提供了应用编程接口。
在我们的这个简单的实例当中,前面form action=“”表示提交到相应Servlet(以“/”开始,路径不带入应用名),method=。。。表示提交方式,主要有get和post两种方式,Servlet当中就要实现不同的接口,否则会报错。
web.xml是配置文件,里面 <servlet>和<servlet-mapping>是成对(其实是一对多的)形式出现的,二者就是通过<servlet-name>联系起来的,<servlet-class>是Servlet名,<url-pattern>是访问形式