servlet 第二讲 笔记2 第二、三种开发方法 简单的登录

第二讲 

 

1. 另一种开发方法:通过GenericServlet去开发servlet,只需要重写service方法,相对简单。

相对第一种的使用Servlet接口的方法要简单,代码:

======================================================================

  1. //这是第二种开发servlet的方法,通过继承GenericServlet开发
  2. package com.prince;
  3. import javax.servlet.GenericServlet;
  4. import java.io.*;
  5. import javax.servlet.*;
  6. public class hello2 extends GenericServlet{
  7. //只重写service方法即可
  8. //重写即是覆盖
  9. public void service(ServletRequest req ,ServletResponse res){
  10. //返回helloworldgeneric
  11. try{
  12. PrintWriter pw=res.getWriter();
  13. pw.println("helloworld!generic");
  14. System.out.println ("service!GenericServlet");
  15. }
  16. catch(Exception ex){
  17. ex.printStackTrace();
  18. }
  19. }
  20. }

Web.xml文件中添加多一段访问反馈:

======================================================================

 

  • <servlet>
  • <servlet-name>hello02</servlet-name> <!-- servlet名字-->
  • <servlet-class>com.prince.hello2</servlet-class><!-- servlet 路径,+类名 -->
  • </servlet>  
  • <servlet-mapping>  <!-- servlet映射 -->
  •    <servlet-name>hello02</servlet-name>
  • <url-pattern>/hello2</url-pattern>   <!-- 客户端访问servletURL -->
  • </servlet-mapping>  

======================================================================

使用 urlhttp://localhost:8080/My_app01/hello2  访问



 

 

2. 最后一种开发servlet的方法:通过继承HttpServlet 开发servlet 


 

这是用的最多的一种方法

 

需要重写doGet  doPost 方法

 

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

1.从安全来看get小于postget提交的数据会在浏览器地址栏显示

2.从提交内容看,get小于postget数据不能大于2Kpost不限制,实际编程建议不大于64K

3.从相应速度看,get大于postget要求服务器立即响应,post会形成队列

 

实现一个案例:

======================================================================

 

 

 

  1. //这是第三种开发servlet的方法,通过继承HttpServlet
  2. package com.prince;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5. public class hello3 extends HttpServlet{
  6. // 重写处理GET请求
  7. public void doGet (HttpServletRequest req, HttpServletResponse res){
  8. //req 用来获得浏览器的信息
  9. //res 用来发送信息
  10. try{
  11. PrintWriter pw=res.getWriter();
  12. pw.println("hello,http");
  13. }
  14. catch(Exception ex)
  15. {
  16. ex.printStackTrace();
  17. }
  18. }
  19. //处理post请求
  20. public void doPost (HttpServletRequest req, HttpServletResponse res){
  21. //req 用来获得浏览器的信息
  22. //res 用来发送信息
  23. this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来发送
  24. }
  25. }

同样,修改web.xml:  添加下面

======================================================================

 

  • <servlet>
  • <servlet-name>hello03</servlet-name> 
  • <servlet-class>com.prince.hello3</servlet-class>
  • </servlet> 
  • <servlet-mapping> 
  •    <servlet-name>hello03</servlet-name>
  • <url-pattern>/hello3</url-pattern> 
  • </servlet-mapping> 

======================================================================

======================================================================

======================================================================

 

 

一个简单的登录界面的实现 纯servlet实现

 

 

登录界面 实现 需要几个处理java文件:

1.界面文件

2.界面处理文件

3.跳转到的页面


 

每完成一个servlet,都需要添加一个对应的响应到web.xm;


 

首先是页面文件:

======================================================================

 

  •   //登录界面
  • package  com.prince;
  • import javax.servlet.http.*;
  • import java.io.*;
  • public class login extends HttpServlet{
  • public void doGet (HttpServletRequest req, HttpServletResponse res){
  • //req 用来获得浏览器的信息
  • //res 用来发送信息
  • try{
  • res.setContentType("text/html;charset=gbk");
  • //中文乱码解决,css方法
  • 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=passwd><br>");
  • pw.println("<input type=submit value=login><br>");
  • pw.println("</form>");
  • //pw.println("");
  • pw.println("</body>");
  • pw.println("</html>");
  • }
  • catch(Exception ex)
  • {
  • ex.printStackTrace();
  • }
  • }
  • //处理post请求
  • public void doPost (HttpServletRequest req, HttpServletResponse res){
  • //req 用来获得浏览器的信息
  • //res 用来发送信息
  • this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来发送
  • }
  • }

 

Xml中添加:

======================================================================

 

 

  • <servlet>
  • <servlet-name>login1</servlet-name> 
  • <servlet-class>com.prince.login</servlet-class>
  • </servlet>  
  • <servlet-mapping> 
  •    <servlet-name>login1</servlet-name>
  • <url-pattern>/login</url-pattern> 
  • </servlet-mapping> 

======================================================================

 

然后是登录处理文件:

======================================================================

 

  1. //登录 处理
  2. package  com.prince;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5. public class logincl extends HttpServlet{
  6. public void doGet (HttpServletRequest req, HttpServletResponse res){
  7. //req 用来获得浏览器的信息
  8. //res 用来发送信息
  9. try{
  10. res.setContentType("text/html;charset=gbk");
  11. //中文乱码解决,css方法
  12. //接收浏览器返回的用户名和密码
  13. String u=req.getParameter("username");
  14. String p=req.getParameter("passwd");
  15. // 验证:
  16. if(u.equals("wk")&&p.equals("123456")){
  17. //合法跳转
  18. res.sendRedirect("wellcome");// 写你要到的servlet的那个URL
  19. }
  20. else{
  21. //不合法
  22. res.sendRedirect("login");
  23. }
  24. }
  25. catch(Exception ex)
  26. {
  27. ex.printStackTrace();
  28. }
  29. }
  30. //处理post请求
  31. public void doPost (HttpServletRequest req, HttpServletResponse res){
  32. //req 用来获得浏览器的信息
  33. //res 用来发送信息
  34. this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来发送
  35. }
  36. }

 

 

======================================================================

Xml中添加:

======================================================================

 

  • <servlet>
  • <servlet-name>logincl</servlet-name> 
  • <servlet-class>com.prince.logincl</servlet-class>
  • </servlet>   
  • <servlet-mapping> 
  •    <servlet-name>logincl</servlet-name>
  • <url-pattern>/logincl</url-pattern> 
  • </servlet-mapping> 

======================================================================

 

 

最后是wellcome界面

======================================================================

 

  1. //wellcome
  2. package com.prince;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5. public class wellcome extends HttpServlet{
  6. // 重写处理GET请求
  7. public void doGet (HttpServletRequest req, HttpServletResponse res){
  8. //req 用来获得浏览器的信息
  9. //res 用来发送信息
  10. try{
  11. PrintWriter pw=res.getWriter();
  12. pw.println("wellcome,http");
  13. }
  14. catch(Exception ex)
  15. {
  16. ex.printStackTrace();
  17. }
  18. }
  19. //处理post请求
  20. public void doPost (HttpServletRequest req, HttpServletResponse res){
  21. //req 用来获得浏览器的信息
  22. //res 用来发送信息
  23. this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来发送
  24. }
  25. }

Xml中添加:

======================================================================

 

  • <servlet>
  • <servlet-name>welcome1</servlet-name> 
  • <servlet-class>com.prince.wellcome</servlet-class>
  • </servlet>  
  • <servlet-mapping> 
  •    <servlet-name>welcome1</servlet-name>
  • <url-pattern>/wellcome</url-pattern> 
  • </servlet-mapping> 

======================================================================

 

 

 

PS

1.经验,每次修改后都要使用jcreater编译一遍,确保生成了class文件

2.每次修改后都要reload一次服务器,才能重新加载新的文件

3.Eclipse中的console 有显示服务器的消息

4.Jcreater中输入out 再按下tab 可以得到System.out.println ("") 

5.Jcreater 中输入 tryc 再按下tab 可以得到:

 try{

}

catch(Exception ex)

{

}

6.一种将postget结合使用的方法:在post中调用get

public void doPost (HttpServletRequest req, HttpServletResponse res){

this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来专门发送

}

7.中文乱码问题:

      res.setContentType("text/html;charset=gbk");  在使用res前设置

8.使用String u=req.getParameter("username");来得到浏览器的数据。Usernameinput text name属性。

9.页面跳转的方法:

res.sendRedirect("wellcome");// 写你要到的servlet的那个URLurlweb.xml中设置。

10.最后交代下,我使用eclipse启动tomcat,在console查看tomcat的后台,使用jcreater来编译java文件,使用notepad来编写java文件。

虽然麻烦,但解决了jcreater的中文输入麻烦的问题,却也遇到了notepad无法快速录入代码的问题,但这对锻炼基础功很有好处,毕竟我的java基础很不牢靠(原来写c#的。。。)。


servlet <wbr>第二讲 <wbr>笔记2 <wbr>第二、三种开发方法 <wbr>简单的登录

servlet <wbr>第二讲 <wbr>笔记2 <wbr>第二、三种开发方法 <wbr>简单的登录

servlet <wbr>第二讲 <wbr>笔记2 <wbr>第二、三种开发方法 <wbr>简单的登录


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值