JSP/Servlet Web 学习笔记 DayFour

Servlet概述

  Servelt是使用Java Servlet应用程序接口及相关类和方法的Java程序。

  Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java服务器中。

  Java Servlet API 定义了Servlet和服务器之间的标准接口,这使得Servlet具有跨服务器平台的特性

  通常,Servlet采用一种无状态的“请求-响应”模型来访问。它能处理客户端传来的Http请求,从中提取参数,处理业务逻辑,最终返回数据或输出HTML。它还可以访问数据库,进行计算,并和Enterprise JavaBean 组件进行通信。


Servlet的运行原理

  见之前的JSP运行原理。


Servlet的生命周期

  有javax.servlet.Servlet定义。

  装载类--->初始化(init())--->服务(service())--->销毁(destroy())


Servlet常见结构

@WebServlet("/Name")
public class Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()   *  init()
     */
    public Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   * 处理get请求
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   * 处理post请求
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

    }

}

Servlet获取请求中的参数

  类似于JSP,采用getParameter()方法,常用的具体如下:

public String getParameter(String name);   //获取指定名称的参数值
public String[] getParameterValues(String name); //适用于一个参数名对应多个值的情况
public java.util.Enumeration getParameterNames(); //返回一个包含请求消息中所有参数名的枚举对象。
public java.util.Map getParamterMap(); //返回所有参数名和对应参数值的map

  数据乱码问题:

      POST方法:按HTML页面指定的编码进行编码。

            在Servelt类的请求处理方法需先调用HttpServletRequest接口的setCharacterEncoding(String enc)方法使数据按参数编码。

      通常使用response.setContentType("text/html;charset=utf-8")即可。

      GET方法:参数被拼接到URL后面提交。即上述方法已经不起作用。

           在发送这些数据前先手工把他们按页面指定的编码方式编码好:java.net.URLEncoder.encode(String s,String enc)方法。然后再发送。

           再Servlet类的请求处理方法中再手工解码:java.net.URLDecoder.decode(String s,String enc)方法。

           最好的做法是再URL中不要使用中文等非ASCII字符。


重定向 && 请求分派

绝对URL 以“/”开头的路径,指的是相对于Web应用根目录的路径。
相对URL 不是以“/”开头的路径,指的是相对于当前路径目录的路径。

    重定向

    相关方法: HttpServletRequest接口提供的sendRedirect()

    说明:不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一容器中的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源

public void sendRedirect(String location) throws IOException;   //location可使用绝对URL和相对URL

    注意:重定向会将当前URL改变为定向后的程序的URL,即Get方法不能通过重定向传递给后者。发起者和被调用者使用各自的request和response实例。

    工作原理:

    

    请求分派

    相关方法:  Servlet API中定义了一个RequestDispatcher接口,俗称请求分派器。它定义了如下两个方法:

public void forward(ServletRequest request,ServletResponse response) throws ServletException, IOException;

public void include(ServletRequest request,ServletResponse response)    throws ServletException, IOException;

    说明:获取RequestDispatcher实例的方法有两种

          调用ServletContext接口提供的getRequestDispatcher(String url)    URL必须为绝对路径

          调用ServletRequest接口提供的getRequestDispatcher(String url)    URL可以为相对路径,也可以为相对路径

       只能将请求转发给同一个Web应用中的其他组件,不能转发到其他站点的资源。

    注意:请求转发过程接受后,浏览器保持初始的URL地址不变。并且发起者和被调用者共用一个request和response实例。

    工作原理:

 

   另外:因为公用一个request、response实例,则该方法可以利用setAttribute(String name, Oject obj)以及getAttribute(String name)等方法来利用请求域属性传递对象数据。实例如下:

boolean isError=true;
request.setAttribute("error", isError);
request.getRequestDispatcher("servletcom.jsp").forward(request, response);
boolean a=(boolean)request.getAttribute("error");
跳转的另一端直接获取即可

Servlet的调用

  1)URL调用:当在配置文件中指定Servlet映射地址后,可直接从浏览器调用Servlet,如:

       http://localhost:8080/helloworld

  2)JSP文件中调用:可使用<jsp:include>或者<jsp:forward>语句在JSP页面中调用一个Servlet,如:

         <jsp:include page="/Servlet" flush="true"/>

    页面执行中,当遇到这一句会跳转到响应的Servlet,当Servlet执行结束后控制权又回到原来的JSP页面中。

    也可以用<jsp:forward>进行跳转。        

时间: 2024-10-22 11:57:30

JSP/Servlet Web 学习笔记 DayFour的相关文章

JSP/Servlet Web 学习笔记 DayFour —— 实现一个简单的JSP/Servlet交互

小实例说明: a)实现一个由JSP负责前台显示,Servlet负责后台处理的交互小实例 b)JSP页面由表单获取一个开始数字,一个结束数字,交给Servlet打印响应的乘法表. 未解决的问题: a)跳转貌似不能识别目录中的HTML文件,所以我把源码复制到JSP中,结果能找到. b)Servlet获取到JSP传过来的数据后,如果想在JSP页面out.print相关的JS代码貌似不能实现 目前的效果是:在当前的Servlet页面弹出了JS alert()弹窗 再重定向回之前的JSP页面. 源码: <

JSP/Servlet Web 学习笔记 DayTwo

JSP指令 a)page指令 定义JSP文件中的全局属性.一个JSP页面可以包含多个page指令.除了Import以外,其他page指令定义的属性/值只能出现一次. 其详细语法为: <%page [language="java"] [extends="package.class"] [import="{package.class|package.*},……"] [session="true|false"] [buffer

JSP/Servlet Web 学习笔记 DayThree

JSP内置对象 使用JSP语法可以存取这些内置对象来执行JSP网页的Servlet环境相互作用.内置对象其实是由特定的Java类所产生的.每一种内置对象都映射到一个特定的Java类或者端口,在服务器运行时根据情况自动生成. 下表列出了所有的JSP内置对象: 对象名 描述 作用域  分类 appliction 显示相应网页是有应用程序的对象 整个应用程序执行期间 作用域通信对象:检索JSP页面的Servlet相关信息 session 保存个人信息的个人所有对象 会话期间 pageContext 提

JSP/Servlet Web 学习笔记 DayThree —— 实现一个登陆小界面

项目说明 利用JSP.HTML.JS实现了一个简易的登陆系统.根据前两天的所学,实现了如下功能: a)用户名.密码验证(不基于数据库,只做一个简单的表单数据获取并验证) b)页面访问次数统计 c)验证用户名.密码为空的提醒弹窗 d)一个简易的根据输入错误次数来实现的防恶意登陆的小弹窗 相关知识点: a)主要利用form的POST方法传递数据,在此之外再基本利用<jsp:param>标签配合<jsp:forward>传递其他的相关数据. b)此外JavaScript可以完美嵌套于JS

web学习笔记-servlet

web学习笔记-servlet 概念 servlet是一个小应用程序,用于处理从客户端发送的请求及服务端的响应. 详情参见: 百度百科的定义 在idea创建servlet 在src右键新建servlet,如图所示: 然后会报异常可以下载包,也可以添加tomcat中的包,添加tomcat->lib-->servlet-api.jar作为libraries. 然后再打开web.xml此时会发现多出一个servlet标签 ServletDemo1 servelt.ServletDemo1 "

WEB学习笔记

第一章 ASP.NET基础介绍: 静态网页:相应速度快,主要是.html文件,维护比较麻烦,13亿人口的信息要建13亿个网页,代码是在客户端执行的,代码不需要在服务器上执行,可以包含js的代码 动态网页:页面中包含有需要在web服务器上执行的代码,将结果连同HTML代码一起发给客户端浏览器,无论以何种言语编写的动态网页,到达浏览器的时候都是HTML代码,最常见的动态网页后缀有.jsp/.asp/.php及.aspx WEB服务器主要有:IIS和Apache/  URL地址中的字母不区分大小写 网

[原创]java WEB学习笔记6:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

JSP/Servlet应该学习什么

概述 DRP的学习战线拉得很长,因为中途学习.net而停止了java的学习.停止java,学习.net,使.net的知识更加的扎实了,也使我再继续学习DRP时,学习目标变得更加的明确了. JSP/Servlet应该学习什么? Java的IDE 工欲善其事必先利其器,想着写一个jsp/Servlet的小Demo,首先的问题就是学会如何使用IDE,其中包括第三方jar包的引入,第三方jar包和源代码的关联,Tomcat的集成,部署Web程序等,这块内容与我们学习具体JSP/Servlet的知识没有多

Jsp+Servlet+JavaBean学习阶段案例-留言板(MessageBoard)

Jsp+Servlet+JavaBean学习阶段的一个案例总结 名称:留言板(MessageBoard) 开发技术:Jsp+Servlet+JavaBean 数据库:Mysql 开发工具:IntelliJ IDEA 2016.1.3 服务器:Tomcat 8.0.36 功能说明 普通用户:增加删除修改留言信息 管理员:增加删除修改留言信息.管理用户.设置用户发帖留言权限 数据库结构 tb_user表 字段 类型 名称 说明 id int id name nvarchar 姓名 password