1、
2、开发servlet三种方法
1.实现servlet接口
2.继承GenerieServlet
3.继承HttpServlet
3、servlet开发流程
1)在tomcat中webapps中建一个文件夹(myWebsign) -> WEB-INF -> classes(放servlet的) lib(放jar包的)web.xml文件
2)引入jar包 servlet-api.jar
package com.tsinghua;实现servlet接口
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 implement Servlet{
//该函数用于初始化servlet(类似于类的构造函数)
//该函数只会被调用一次(当用户第一次访问该servlet时被调用)
public void init(ServletConfig parml) throws ServletException{
}
//得到servlet配置文件
public ServletConfig getServletConfig(){
}
//这个函数用于处理业务逻辑
//程序员应当把业务逻辑代码写在这里
//当用户每访问servlet时,都会调用
//req:用于获得客户端(浏览器)信息
//res:用于向客户端返回信息
public void service(ServletRequest req,ServletRespinse res) throws {
PrintWriter pw = res.getWriter();
pw.println("hello,world");
}
public String getServletInfo(){
}
//销毁servlet实例(释放内存)
//1.reload 该servlet(webApps) 2.关闭tomcat 3.关机
public void destory(){
}
}
3)部署servlet 在web.xml文件中加代码
<servlet>
<!--给你的servlet取名,任意的-->
<servlet-name>hello</servlet-name>
<!--指明servlet的路径,(包名+类名)-->
<servlet-class>com.tsinghua.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.0.1:8080/myWebsign/sp 回车
4、servlet的生命周期
1)封装servlet由相应的容器来完成
2)创建一个Servlet实例
3)调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次
4)服务,调用servlet的service()方法,一般业务逻辑在这里了处理。该方法在访问servlet时都会被调用
5)销毁 调用servlet的destory()方法,销毁该servlet实例 该方法在一下情况被调用
1.reload 该servlet(webApps) 2.关闭tomcat 3.关机
5.这是第二种开发servlet的方法(继承GenericServlet开发)
package com.tsinghua;
import javax.servlet.GenericServlet;
import java.io.*;
public class HelloGen extends GenericServlet{
//重写service方法即可
public void service(ServletRequest req,ServletResponse){
//返回hello.world! generic
try{
printwriter pw = res.getwriter();
pw.println("hello,world!generic");
}catch(Exception e){
e.printStackTrace();
}
}
}
6.通过继承HttpServlet开发servlet
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class HelloHttp extends HttpServlet{
//处理get请求
/ //req:用于获得客户端(浏览器)信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,httpServletResponse res){
try{
printwriter pw = res.getwriter();
pw.println("hello,world!generic");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,httpServletResponse res){
this.doGet(req,res);
}
}
7、用户登录网站
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
//处理get请求
//req:用于获得客户端(浏览器)信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,httpServletResponse res){
//业务逻辑
try{
//中文乱码
res.setContentType("text/html;charset=gbk");
printwriter pw = res.getwriter();
//返回登录界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>登录界面</h1>");
pw.println("<form action=logincl method=post>");
pw.println("用户名:<input type = text name = username><br>");
pw.println("密码:<input type = password name = pwd><br>");
pw.println("<input type = submit value = loing><br>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,httpServletResponse res){
this.doGet(req,res);
}
}
//用户验证servlet
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class LoginCl extends HttpServlet{
//处理get请求
//req:用于获得客户端(浏览器)信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,httpServletResponse res){
//业务逻辑
try{
//中文乱码
res.setContentType("text/html;charset=gbk");
String u=req.getParameter("username");
String p = req.getParameter("pwd");
if(u.equals("sp")&&p.equals("123")){
//合法
}else{
//不合法
//跳转
res.sedRedirect("login");//写你要到的servlet的那个url
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,httpServletResponse res){
this.doGet(req,res);
}
}