当前位置:首页 > 企业简介 >

Web---创建Servlet的3种方式、简单的用户注册功能

作者:永年县聚联紧固件制造有限公司    发布时间:2017-09-03 12:18:27

Web---创建Servlet的3种方式、简单的用户注册功能

创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式。

简单的用户注册功能(我们设置了所以权限都是开放的),可以实现:
1、用户注册。
2、查询所有用户
3、删除某个用户

创建Servlet的方式二:继承 GenericServlet SecondServlet.java: package cn.hncu.servlet.day2; import java.io.IOException; import javax.servlet.GenericServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; //以继承GenericServlet 的方式 写 servlet public class SecondServlet extends GenericServlet{ //一个小知识点!!! //适配器模式的一个知识点:适配器中的init(ServletConfig config)中帮我们把它当中的config对象赋值 且调用一个空参的init()。 //我们以后应该覆盖空参的init()。因为如果覆盖了这个带参数的,那么就无法实现为它的config对象赋值,由此导致其中使用config对象(this.)的方法会出错。 ////其实这种方法(调用 一个空参的init()且 该参数方法中什么也没做 )也程序员之间的一种交流方式,告诉我们要覆盖空参的方法,这样它在帮我们做完事情会调用我们的覆盖方法 // @Override // public void init(ServletConfig config) throws ServletException { // System.out.println(config);//这里不会出现问题,父类:init(ServletConfig config)中有这一句:this.config = config; // String charset = config.getInitParameter("charset"); // System.out.println(charset); // System.out.println("init..."+this); // } @Override public void init() throws ServletException { System.out.println("init...."+this); } @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { //String charset = this.getInitParameter("charset"); //如果本例写了init(ServletConfig config)方法,覆盖了父类的init(ServletConfig config)方法,这句会出异常 //System.out.println(charset); String charset = this.getInitParameter("charset"); System.out.println(charset); request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); System.out.println("name:"+name+",pwd:"+pwd); } } index.jsp: 下面是本章节博客的内容 演示servlet技术---第二种创建Servlet的方式(继承GenericServlet) web.xml: SecondServlet cn.hncu.servlet.day2.SecondServlet charset utf-8 SecondServlet /second 演示结果:

填写好姓名,密码后点击提交:

\

再看后台:

\

创建Servlet的方式三:继承HttpServlet index.jsp: 演示servlet技术---第三种Servlet的方式(继承HttpServlet) web.xml: ThirdServlet cn.hncu.servlet.day2.ThirdServlet ThirdServlet /third ThirdServlet.java: package cn.hncu.servlet.day2; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //注意:采用继承HttpServlet的方式写servlet,doGet和doPost这2个方法通常都要覆盖 //否则如果doGet方法没覆盖,有get请求时就会出现405错误,不覆盖doPost方法同理 public class ThirdServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("get..."); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("post"); } } 覆盖doGet和doPost这2个方法的说明:

注意:采用继承HttpServlet的方式写servlet,doGet和doPost这2个方法通常都要覆盖
否则如果doGet方法没覆盖,有get请求时就会出现405错误,不覆盖doPost方法同理.
产生这个的原因是:
我们来看底层代码:
这是一个常量:
public static final int SC_METHOD_NOT_ALLOWED = 405;
因为HttpServlet继承GenericServlet,GenericServlet implements Servlet。所以,当客户端访问的时候,最先找的是:父类的servlet
也就是:service(ServletRequest req, ServletResponse res)
这个方法继续调用:service(request, response);
再通过这个方法调用doGet()或doPost()或其他方法。
如果我们没覆盖doGet()或doPost()。
我们用的是http1.1协议,会调用resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);于是出现了405错误!

\

\

\

\

演示结果:

我们将表单提交的方式定义成post提交了的。默认是get

简单的用户注册功能:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉SEO http://www.feimao666.com

  • 上一篇:武汉肥猫科技|有颜值又有见地的网站总是经久不衰
  • 下一篇:最后一页
  •