JavaEE开发学习笔记(2)

原创 2012年03月30日 08:34:36

 

8. 使用继承GenericServlet类的方法来开发Servlet

       这个类是javax.servlet包中的一个类,提供这个类简化了servlet的开发

       在继承了GenericServlet类的子类中,只需要重写service方法即可,也就是要重写实现用户自己业务逻辑的函数方法。

       与实现Servlet接口类似,也是打印一个“Hello world”。

       具体的代码如下:

 

// 这是第二中开发Servlet的方法(通过继承GenericServlet开发)

package com.tsinghua;

 

import javax.servlet.GenericServlet;

import java.io.*;

import javax.servlet.*;

 

public class HelloGen extends GenericServlet

{

       // 重写service方法即可

       public void service(ServletRequest req, ServletResponse res)

       {

              // 返回Hello world

              try{

                     PrintWriter pw = res.getWriter();

                     pw.println("Hello world! Generic");

              }

              catch(Exception ex)

              {

                     ex.printStackTrace();

              }

       }

}     

       Servlet的配置类似于实现Servlet接口的配置。在web.xml中加入相应的servlet配置代码即可。

  

9. 通过继承HttpServlet开发Servlet方法:

       通过继承HttpServlet去开发Servlet方法,需要重写doGet()doPost()方法。这是目前用的比较多的一种方法。

       表单提交数据的get请求和post请求的区别:

      1. 从安全性来讲,get < post get的数据会在浏览器的地址栏显示

      2. 从提交内容的大小来看,get < post  理论说get提交的数据不能大于2Kpost在理论上不受限制,但是我们实际编程中一般不要大于64K

      3. 从响应速度上看,get > postget要求服务器立即处理请求。而post请求可能形成一个队列请求。

 

      与继承GenericServlet 类类似,继承HttpServlet类,要重写相应的一些方法。doGetdoPost方法。

      doGetdoPost方法的参数可以知道,它们实现的功能是相同的,仅仅是使用不同的函数名字。这样就可以在doGet方法中调用this.doPost(req, res); 或者相反在doPost中调用this.doGet(req, res);方法。例如第二种,这样仅仅需要在doGet方法中实现相应的业务逻辑即可。

 

这种方法的代码如下所示:

// 这是第三种开发servlet的方法(通过继承HttpServlet类来实现)

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! Http");

              }    

              catch(Exception ex)

              {

                     ex.printStackTrace();

              }

       }

      

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doPost( HttpServletRequest req, HttpServletResponse res)

       {

              this.doGet( req, res);

       }

}

       servlet的配置方法与上面相同。其中不需要重复启动tomcat,只需要在tomcat的管理员页面中重新加载你的工程即可。

 

10. Servlet开发实例

       简单的用户登陆网站(Servlet版本1),主要实现用户验证功能

       知识点:

       1. 如何使用servlet开发动态网页

       2. 如何从一个页面跳转到另外一个页面。

      

       用户登录网站(Sevlet版本1.0)框架处理

      

       具体的开发则是书写Login.java LoginCl.javaWel.java文件。

       LoginCl.java中做一个用户信息的验证,如果成功则转向welcome页面。

 

       其中碰到的两个问题:

        1. 乱码的处理:

        在使用res参数返回页面信息之前,调用res.setContentType("text/html;charset=gbk");来设置字符集。使用gbk就不会出现乱码了。

 

       2. 页面的跳转:

       页面的跳转是通过resres.sendRedirect("welcome");方法来实现。

 

具体实现代码如下:

// 登录界面

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("<form action=loginhandle method=post>");

                     pw.println("用户名:<input type=text name=username><br>");

                     pw.println("密码:<input type=password name=passwd><br>");

                     pw.println("<input type=submit value=loing><br>");

                     pw.println("</form>");

                     pw.println("</body>");

                     pw.println("</html>");

              }    

              catch(Exception ex)

              {

                     ex.printStackTrace();

              }

       }

      

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doPost( HttpServletRequest req, HttpServletResponse res)

       {

              this.doGet( req, res);

       }

}

 

LoginHandle的代码:

// 用户验证servlet

package com.tsinghua;

 

import javax.servlet.http.*;

import java.io.*;

 

public class LoginHandle extends HttpServlet

{

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doGet( HttpServletRequest req, HttpServletResponse res)

       {

              // 业务逻辑在此处书写

              try{

                     // 接收用户的信息,用户名和密码

                     String u = req.getParameter("username");

                     String p = req.getParameter("passwd");

                    

                     // 验证

                     if(u.equals("sp") && p.equals("123"))

                     {

                            // 合法

                            // 跳转

                            res.sendRedirect("welcome");

                     }

                     else

                     {

                            // 不合法

                            // 跳转

                            res.sendRedirect("login"); // 这里的参数要跳转到的ServletURL

                     }

              }    

              catch(Exception ex)

              {

                     ex.printStackTrace();

              }

       }

      

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doPost( HttpServletRequest req, HttpServletResponse res)

       {

              this.doGet( req, res);

       }

}

 

Welcome的源代码:

// 欢迎界面

package com.tsinghua;

 

import javax.servlet.http.*;

import java.io.*;

 

public class Welcome extends HttpServlet

{

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doGet( HttpServletRequest req, HttpServletResponse res)

       {

              // 业务逻辑在此处书写

              try{

                     PrintWriter pw = res.getWriter();

                     pw.println("Wel, hello!");      

              }    

              catch(Exception ex)

              {

                     ex.printStackTrace();

              }

       }

      

       // 处理get请求

       // req:用于或得客户端的信息

       // res:用于向客户端返回信息

       public void doPost( HttpServletRequest req, HttpServletResponse res)

       {

              this.doGet( req, res);

       }

}

 

配置文件如前面所述,详细代码如下:

<!-- JSPC servlet mappings start -->

       <!—Login  配置 -->

       <servlet>

          <servlet-name>login</servlet-name>

          <servlet-class>com.tsinghua.Login</servlet-class>

      </servlet>

      <servlet-mapping>

          <servlet-name>login</servlet-name>

          <url-pattern>/login</url-pattern>

      </servlet-mapping>

 

       <!—LoginHandle 配置 -->

       <servlet>

          <servlet-name>loginhandle</servlet-name>

          <servlet-class>com.tsinghua.LoginHandle</servlet-class>

      </servlet>

      <servlet-mapping>

          <servlet-name>loginhandle</servlet-name>

          <url-pattern>/loginhandle</url-pattern>

      </servlet-mapping>

 

       <!--  Welcome配置 -->

       <servlet>

           <servlet-name>welcome</servlet-name>

           <servlet-class>com.tsinghua.Welcome</servlet-class>

       </servlet>

       <servlet-mapping>

            <servlet-name>welcome</servlet-name>

            <url-pattern>/welcome</url-pattern>

        </servlet-mapping>

 

<!-- JSPC servlet mappings end -->

 

 

By 北洋小郭

转载请注明出处,请勿用于商业用途,谢谢!

(转)韩顺平j2ee学习笔记与心得

Java EE概念:Java EE是一个开放的平台,它包括的技术很多,主要包括十三种核心技术(java EE就是十三种技术的总称)。建立一个整全的概念。要成为一个java EE程序员,必须掌握的技术是...
  • lishirong
  • lishirong
  • 2014年12月02日 09:47
  • 2276

超详细的java基础知识学习(java SE、javaEE)笔记 核心重点!

标识符 Java 的标识符是由字母、数字、下划线_、以及美元符$组成,但是首字母不可以是数字。Java 标识符大小写敏感,长度无限制,不能是 Java 中的关键字。命名规则:要见名知意! u  变...
  • qq_34477549
  • qq_34477549
  • 2016年10月13日 09:12
  • 2403

吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(2-1)-- 深度学习的实践方面

改善深层神经网络:超参数调试、正则化以及优化 ---- 深度学习的实践方面
  • Koala_Tree
  • Koala_Tree
  • 2017年09月28日 17:00
  • 2398

JavaEE开发的颠覆者Spring Boot实战学习笔记一:Spring基础

一.Spring基础配置      1.依赖注入      示例代码展示:基于注解的Bean的初始化和依赖注入,Spring容器类选用AnnotationConfigApplicationContex...
  • dageju
  • dageju
  • 2017年11月09日 11:14
  • 7

JavaEE开发学习笔记(3)

11. 同一用户共享不同页面的数据        1)cookie技术        服务器保存客户端的信息,例如保存用户名,密码。服务器获得这些信息后,需要回写到客户端的某个目录。这样服务器在使...
  • xiao_0429
  • xiao_0429
  • 2012年04月09日 22:30
  • 427

javaee开发笔记

javaee开发笔记     tomcat处理静态html的能力差,可以将tomcat与apache集成到一起,apache处理html,而tomcat处理jsp和servlet,如果要进行EJB开...
  • xiao__jia__jia
  • xiao__jia__jia
  • 2018年01月07日 10:35
  • 11

javaweb学习(1):win10配置javaee开发环境eclipse+tomcat+mysql,web小项目

前言: 本案例是一个简单,但是完整的javaweb小项目。 1,主要功能:实现注册和登陆功能。功能截图如下: 图1:主页 图2:登录页面 图3:注册页面 2,用到的we...
  • qq_32166627
  • qq_32166627
  • 2016年03月10日 15:01
  • 4716

wrt_JavaEE开发的颠覆者 Spring Boot实战.part2

  • 2016年11月14日 18:01
  • 60MB
  • 下载

JavaEE开发的颠覆者_Spring_Boot实战_完整版.part2.rar

  • 2017年03月22日 21:27
  • 65MB
  • 下载

JavaEE开发的颠覆者 Spring Boot实战 完整版 part2

  • 2017年10月30日 23:39
  • 79.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaEE开发学习笔记(2)
举报原因:
原因补充:

(最多只允许输入30个字)