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#的。。。)。
相关文章推荐
- Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet具体解释、Servlet的生命周期(2)
- Java开发学习笔记之二:一个简单的Servlet
- 代码片-1】 Servlet学习(一)----Servlet的生命周期以及开发Servlet的三种方法
- Android开发笔记——改变字体颜色的三种方法
- 开发servlet的三种方法
- 开发Servlet的三种方法
- 开发servlet的三种方法
- 【重温】_JSP与Servlet重温笔记,要点概述,jsp_servlet简单登录页面
- opencv开发笔记(七):三种方法遍历图像操作像素
- iOS应用开发中实现页面跳转的简单方法笔记
- Servlet学习(一)----Servlet的生命周期以及开发Servlet的三种方法
- Android开发笔记 改变字体颜色的三种方法
- Servlet学习笔记(Servlet生命周期&开发Servlet的方法)
- 用MVC开发模式实现servlet简单的登录功能(带图片验证码)
- (第3讲)开发servlet的三种方法
- 开发 Servlet 三种方法
- Servlet简单登录界面自学笔记三
- IOS开发简单登录LoginViewController、注册RegisterViewController、UcenterViewController功能实现方法
- 【iOS开发每日小笔记(九)】在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
- Servlet——开发Servlet三种方法详解