博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet&jsp 的使用以及jsp的历史遗留用法
阅读量:4099 次
发布时间:2019-05-25

本文共 3547 字,大约阅读时间需要 11 分钟。

查询为例:开发流程

Servlet: 执行查询
public void service(HttpServletRequest request, HttpServletResponse response) {

        17行

// 1) jdbc 代码,连接数据库,执行sql,查询结果		// 2) 存入作用域	request.setAttribute("变量名", 查询结果);		// 3) 由servlet跳转至jsp                    转发	request.getRequestDispatcher("目标jsp路径").forward(request, response);}jsp: 显示结果<%@ page contentType="text/html;charset=utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
${临时变量名}

1. 如何接收各种不同表单参数

        33行



唱歌
跳舞
睡觉
玩游戏


个人简介:

        40行

@WebServlet(urlPatterns = "/s1")public class Servlet1 extends HttpServlet {    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 处理汉字乱码        req.setCharacterEncoding("utf-8");        // 1) 日期类型的接收,需要注意转换字符串为java中的Date类型        String birthday = req.getParameter("birthday");        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        try {            Date date = sdf.parse(birthday);            System.out.println(date);        } catch (ParseException e) {            e.printStackTrace();        }        // 2) 处理单选按钮        String sex = req.getParameter("sex");        System.out.println(sex);        // 3) 处理复选框, 注意处理null值(都没有勾选时,就是null值)        String[] hobbies = req.getParameterValues("hobby");//        System.out.println(Arrays.toString(hobbies));        if(hobbies != null) {            for (String hobby : hobbies) {                System.out.println(hobby);            }        }        // 4)处理下拉列表        String city = req.getParameter("city");        System.out.println(city);        // 5)处理文本域        String intro = req.getParameter("intro");        System.out.println(intro);    }}

2. jstl 标签

c:choose 类似于 if elseif else

语法:

        8行

内容1
内容2
...
内容n
以上条件都不成立时

c:out 用来输出特殊内容

它可以对${}输出的内容进行控制,可以控制是否忽略html代码

        2行

不忽略html

        2行

忽略html,(当做普通文本)

fmt:formatDate 用来格式化日期

fmt:formatNumber 用来格式化数字
语法示例:

        4行

数字格式 # 和 0 其中0可以用来前置补零或后置补零

3. jsp 遗留语法

3.1 jsp的脚本

        4行

<%	任意java代码%>

jsp的弊端在于当代码越来越多时,使用jsp脚本的方式,会造成项目代码难以维护

现在绝大多数公司都禁止在jsp出现脚本代码

3.2 jsp表达式

        2行

<%= 表达式 %>

作用是向页面显示值, 表达式不能以;结束

3.3 jsp指令(**)

        7行

<%@ page contentType="页面的内容类型和编码" 	import="要导入的java类"    isELIgnored="是否忽略EL表达式的处理" 	errorPage="出现错误时,要跳转的页面"	isErrorPage="用在错误页面上,取值为true表示是错误页面,这时候才能在页面中使用exception变量"	%>

exception只能配合jsp表达式和jsp脚本使用

        2行

<%@ taglib prefix="前缀" uri="标签的唯一标识" %>

作用是导入标签库

        2行

<%@ include file="另一个jsp页面" %>

作用,重用页面上的一些标签和代码

3.4 jsp声明

        4行

<%! 	可以声明变量和方法%>

jsp的原理:

        18行

jsp 要工作,也必须编译为java类public class 类名 extends HttpJspBase{ // HttpJspBase 又是继承了HttpServlet		public int i = 100;		public int sum(int a, int b) {		return a+b;	}		public void _jspService(HttpServletRequest request,		HttpServletResponse response) {		int i = 10;				out.println(i++);	}}
  1. 当首次访问此jsp时,tomcat会把jsp转译为*.java的类(间接继承自HttpServlet)
  2. 再把*.java类编译为*.class字节码
  3. 把加载到虚拟机执行,生命周期类似于servlet的生命周期

jsp的本质仍是一个servlet

3.5 9大隐式对象

无需声明即可使用。

request 代表请求对象(可以获取请求参数,将变量存入request作用域)

response 代表响应对象(返回响应)
out 代表响应的字符输出流
pageContext 页面上下文对象,可以间接获得request等对象,并可以将变量存入page作用域

config jsp的配置信息

page 当前jsp对象(this)
exception 代表的是异常信息(当页面isErrorPage="true"时有效)

session 变量作用范围是一次会话内有效

application 变量作用范围是整个应用程序有效

page作用域: 变量作用范围仅限于当前页面

request作用域: 变量的作用范围在一次请求内有效

5.jsp forward 6.jsp 两个页面使用的是同一个请求

servlet
servlet forward x.jsp servlet与jsp使用的是同一个请求

转载地址:http://phksi.baihongyu.com/

你可能感兴趣的文章
Java NIO详解
查看>>
单列模式-编写类ConfigManager读取属性文件
查看>>
java中float和double的区别
查看>>
Statement与PreparedStatement区别
查看>>
Tomcat配置数据源步骤以及使用JNDI
查看>>
before start of result set 是什么错误
查看>>
(正则表达式)表单验证
查看>>
在JS中 onclick="save();return false;"return false是
查看>>
JSTL 常用标签总结
查看>>
内容里面带标签,在HTML显示问题,JSTL
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
JS遍历的多种方式
查看>>
ng-class的几种用法
查看>>
node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
查看>>
神经网络--单层感知器
查看>>
注册表修改DOS的编码页为utf-8
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>