1 jsp=html+java片段+jsp语法+javascript
Jsp优势:
1一次编写,到处运行
2良好的跨平台性(基于java)
3多种开放工具支持
4强大的可伸缩性(jsp+javabean)的方式
Jsp的不足:
1jsp产品的复杂度高(jsp入门比asp难)
2jsp要求运行的机器配置要求高,因为jsp是用class常驻内存的方式运行的,效率高,但是需要占用更多的内存
2 1servlet(java服务器小程序)是用java编写的服务器程序,它的特点:
1它是由服务器端调用和执行的
2它是用java语言编写的
3它是按照Servlet规范开发的
4功能强大,可以完成几乎所有的网站功能
5是学习jsp的基础
3servlet开发流程
(1) 在你安装的tomcat的webapps下建立自己的应用(文件夹,例如myWebsite),在此文件夹下建立文件夹WEB-INF,在此文件夹中建立如下:classes子文件夹,lib子文件夹,web.xml文本(写该网站的配置信息)
(2) 开发servlet程序(需要引入servlet-api.jar,用JCreator开发的话,引入它,在configure下的options,找到你安装的jdk-à,编辑--àadd-àarchive-à到你安装的tomcat的common文件夹中的lib文件夹中的servlet-api.jar)
(3) 在web.xml中部署servlet,添加相应代码
例如<servlet>
<!--给你的servlet取名,任意-->
<servlet-name>hello</servlet-name>
<!--指明servlet的路径,即(包名+类名)-->
<servlet-class>com.ly.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,任意-->
<servlet-name>hello</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,名是任意的 -->
<url-pattern>/sp</url-pattern>
</servlet-mapping>
(4)启动tomcat访问你的servlet,在浏览器的地址栏中输入:
http://127.0.01:8080/myWebSite/hello(此为你在web.xml中配置的servlet的url)
回车就可看到servlet的输出
注意: 127.0.0.1是服务器所在的ip,也是换成localhost,如果要访问别的tomcat,应换成与之对应的ip
8080是端口号,要根据实际情况而定
4学习了开发servlet的三种方法,分别用(1实现servlet接口,2继承GenericServert ,只需要重写service方法,相对简单一点 3继承HttpServlet,需要重写doGet,doPost方法)这三种方法实现servlet,使该servlet完成一个简单的功能,即向浏览器回送
Hello,world!
第一种:实现servlet接口
编写程序hello.java如下
package com.ly;
import javax.servlet.*;
import java.io.*;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class Hello implements Servlet{
/**
* Method init
*
*
* @param parm1
*
@throws ServletException
*
*/
//该函数用于初始化该servlet
//该函数只会被调用一次,当用户第一次访问该servlet时被调用
public void init(ServletConfig parm1) throws ServletException {
// TODO: Add your code here
System.out.println("init it");
}
/**
* Method getServletConfig
*
*
* @return
*
*/
public ServletConfig getServletConfig() {
// TODO: Add your code here
return null;
}
/**
* Method service
*
*
* @param parm1
* @param parm2
*
@throws ServletException
@throws IOException
*
*/
//这个函数用于处理业务逻辑
//程序员应该把业务逻辑写在这里
//当用户每访问该servlet时都会被调用
//req 用于获得客户端的信息
//res 用于向客户端(因为是b/s结构,所以为浏览器)返回信息
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO: Add your code here
//res不能直接返回,需从res中得到PrintWriter
PrintWriter pw=res.getWriter();
pw.println("hello,world");
}
/**
* Method getServletInfo
*
*
* @return
*
*/
public String getServletInfo() {
// TODO: Add your code here
return "";
}
/**
* Method destroy
*
*
*/
//销毁servlet实例(释放内存)
//有三种情况下会调用它,1reload 该servlet(wabApps)2关闭tomcat 3关机
public void destroy() {
// TODO: Add your code here
System.out.println("destroy!");
}
}
对应在web.xml下配置如下
<servlet>
<!--给你的servlet取名,任意-->
<servlet-name>hello</servlet-name>
<!--指明servlet的路径,即(包名+类名)-->
<servlet-class>com.ly.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,任意,但注意需要与上面你起的servlet名一致,一样-->
<servlet-name>hello</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,名是任意的 -->
<url-pattern>/ly</url-pattern>
</servlet-mapping>
第二种:继承GenericServer
程序HelloGen.java如下:
//这是第二种开发servlet的方法(通过继承GenericServlet开发)
package com.ly;
import javax.servlet.GenericServlet;
import javax.servlet.*;
import java.io.*;
public class HelloGen extends GenericServlet{
//重写service方法即可
public void service(ServletRequest req,ServletResponse res){
//返回hello,world!generic
try {
PrintWriter pw=res.getWriter();
pw.println("hello,world!generic");
}
catch (Exception ex) {
//想控制台打印错误信息
ex.printStackTrace();
}
}
}
同样在对应的web.xml中配置如下:
<servlet>
<!--给你的servlet取名,任意-->
<servlet-name>hellogen</servlet-name>
<!--指明servlet的路径,即(包名+类名)-->
<servlet-class>com.ly.HelloGen</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,任意-->
<servlet-name>hellogen</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,名是任意的 -->
<url-pattern>/hellogen</url-pattern>
</servlet-mapping>
第三种:继承HttpServlet,需要重写doGet,doPost方法
程序HelloHttp.Java如下:
//这是第三种开发servlet的方法(通过继承HttpServlet,重写doGet,
doPost方法)
package com.ly;
import javax.servlet.http.*;
import java.io.*;
public class HelloHttp extends HttpServlet{
//处理get请求
//req 用于获得客户端的信息
//res 用于向客户端(因为是b/s结构,所以为浏览器)返回
信息
public void doGet(HttpServletRequest req,HttpServletResponse
res){
//业务逻辑
try {
PrintWriter pw=res.getWriter();
pw.println("hello,http");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req 用于获得客户端的信息
//res 用于向客户端(因为是b/s结构,所以为浏览器)返回
信息
public void doPost(HttpServletRequest
req,HttpServletResponse res){
this.doGet(req,res);
}
}
同样相应在web.xml中配置如下:
<servlet>
<!--给你的servlet取名,任意-->
<servlet-name>hellohttp</servlet-name>
<!--指明servlet的路径,即(包名+类名)-->
<servlet-class>com.ly.HelloHttp</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,任意-->
<servlet-name>hellohttp</servlet-name>
<!--这是在浏览器中输入的访问该servlet的url,名是任意的 -->
<url-pattern>/hellohttp</url-pattern>
</servlet-mapping>