您的位置:首页 > 其它

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

2013-10-09 11:30 483 查看

第二讲 下

 
1. 另一种开发方法:通过GenericServlet去开发servlet,只需要重写service方法,相对简单。
相对第一种的使用Servlet接口的方法要简单,代码:
======================================================================

//这是第二种开发servlet的方法,通过继承GenericServlet开发
package com.prince;
import javax.servlet.GenericServlet;
import java.io.*;
import javax.servlet.*;
public class hello2 extends GenericServlet{
//只重写service方法即可
//重写即是覆盖
public void service(ServletRequest req ,ServletResponse res){
//返回helloworld!generic
try{
PrintWriter pw=res.getWriter();
pw.println("helloworld!generic");
System.out.println ("service!GenericServlet");
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
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>   <!-- 客户端访问servlet的URL -->
</servlet-mapping>  
======================================================================
使用 url:http://localhost:8080/My_app01/hello2
4000
  访问

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

 
这是用的最多的一种方法
 
需要重写doGet  doPost 方法
 
表单提交数据get请求和post请求的区别:
1.从安全来看get小于post,get提交的数据会在浏览器地址栏显示
2.从提交内容看,get小于post,get数据不能大于2K,post不限制,实际编程建议不大于64K
3.从相应速度看,get大于post,get要求服务器立即响应,post会形成队列
 
实现一个案例:
======================================================================
 
 
 
//这是第三种开发servlet的方法,通过继承HttpServlet
package com.prince;
import javax.servlet.http.*;
import java.io.*;
public class hello3 extends HttpServlet{
// 重写处理GET请求
public void doGet (HttpServletRequest req, HttpServletResponse res){
//req 用来获得浏览器的信息
//res 用来发送信息
try{
PrintWriter pw=res.getWriter();
pw.println("hello,http");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//处理post请求
public void doPost (HttpServletRequest req, HttpServletResponse res){
//req 用来获得浏览器的信息
//res 用来发送信息
this.doGet(req,res);//将两者结合,在get中放业务逻辑,post用来发送
}
}
同样,修改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> 
======================================================================
 
然后是登录处理文件:
======================================================================
 
//登录 处理
package  com.prince;
import javax.servlet.http.*;
import java.io.*;
public class logincl extends HttpServlet{
public void doGet (HttpServletRequest req, HttpServletResponse res){
//req 用来获得浏览器的信息
//res 用来发送信息
try{
res.setContentType("text/html;charset=gbk");
//中文乱码解决,css方法
//接收浏览器返回的用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
// 验证:
if(u.equals("wk")&&p.equals("123456")){
//合法跳转
res.sendRedirect("wellcome");// 写你要到的servlet的那个URL
}
else{
//不合法
res.sendRedirect("login");
}
}
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>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界面
======================================================================
 
//wellcome
package com.prince;
import javax.servlet.http.*;
import java.io.*;
public class wellcome extends HttpServlet{
// 重写处理GET请求
public void doGet (HttpServletRequest req, HttpServletResponse res){
//req 用来获得浏览器的信息
//res 用来发送信息
try{
PrintWriter pw=res.getWriter();
pw.println("wellcome,http");
}
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>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.一种将post和get结合使用的方法:在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");来得到浏览器的数据。Username是input text 的name属性。
9.页面跳转的方法:
res.sendRedirect("wellcome");// 写你要到的servlet的那个URLurl在web.xml中设置。
10.最后交代下,我使用eclipse启动tomcat,在console查看tomcat的后台,使用jcreater来编译java文件,使用notepad来编写java文件。
虽然麻烦,但解决了jcreater的中文输入麻烦的问题,却也遇到了notepad无法快速录入代码的问题,但这对锻炼基础功很有好处,毕竟我的java基础很不牢靠(原来写c#的。。。)。











内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: