jsp入门

1. Servlet

1.1 概述

Servlet是javaweb的三大组件之一(Servlet,Filter,Listener),属于动态资源。其作用是处理请求,服务器会把接收到的请求交给Servlet处理,Servlet中通常需要:接收请求数据,处理请求,完成响应

1.1.1 实现Servlet的方式:

实现Servlet接口;继承GenericServlet类;继承HttpServlet类。

1.1.2 Servlet接口中的方法
init(ServletConfig config);
getServletConfig();
service(ServletRequset req,ServletResponse res);
getServletInfo();
destory();
1.1.3 Servlet声明周期的方法

init(ServletConfig):创建之后(1次),ServletConfig对象封装了Servlet的配置信息;

service(ServletRequest request,ServletResponse response):每次处理请求时都会被调用(多次),会调用本类的service(HttpServletRequest request,HttpServletResponse response);

destroy():消失之前(1次)

1.1.4 Servlet类的特性

Servlet类采用单例模式,一个servlet类只有一个对象,项目中有多个servlet类。

线程是不并行的,效率高。

1.2 HttpServlet

HttpServlet是GenericServlet的子类,继承下来的service(req,resp)方法会调用本类的service(HttpServletRequset,HttpServletResponse)方法,根据请求方式(GET/POST)调用对应的doGet()/doPost()方法,HttpServlet的子类需要重写doGet()/doPost()方法。

1.3 ServletContext

域对象,一个web应用只有一个ServletContext对象,它在服务器启动时创建,服务关闭时销毁。可以读取全局配置参数,可以搜索当前工程下的资源文件,可以获取当前工程的名字。

1.4 JavaWeb四大作用域

PageContext,ServletRequest,HttpSession,ServletContext

1.5 Servlet三大作用域

requset,session,application

1.6 request和response

requset类型为HttpServletRequset,response的类型为HttpServletResponse,客户端每发送一个请求,服务器就创建一个request对象和response对象,请求数据封装到request中,通过request对象获取请求数据,将响应数据封装到response中,向客户端完成响应。

request.getParameter(参数名):获取请求数据String类型,通过表单或者链接提交的数据,获取POST/GET传递的参数值,用于客户端重定向。

request.getAttribute(参数名):获取对象容器中的值Object类型,获取session的值,用于服务器重定向时。

1.7 转发forward和重定向rediect

请求转发是一个请求一个响应,重定向时两次请求两次响应;

转发是在一个请求中跨越多个动态资源(jsp/servlet),共享一个request数据,重定向时两次请求,不共享request数据;

转发的url地址栏不发生改变,重定向显示后一请求的地址;

转发只能转发到本项目的其他servlet,重定向可以重定向到其他项目的servlet;

1.8 解决客户端和服务器端的乱码

三种方式:

response.setCharacterEncoding("utf-8");
response.setHeader("Content-type","text/html;charset=utf-8");
response.setContentType("text/html;charset=utf-8");

2. JSP

2.1 概述

JSP是javawen服务器端的动态资源,和html页面一样用于显示数据和获取数据,jsp文件有html和java脚本和jsp指令组成。

jsp是一种特殊的servlet,当jsp页面第一次被访问时,服务器会把jsp编译成java文件,把java文件编译成class文件,后边再请求同一jsp时直接使用。

2.2 java脚本类型

三种类型:

​ 声明:用来创建类的成员变量和成员方法(类似于类)

<%! int i=0;
	Object obj=new String();
%>

​ 表达式:用于输出一条表达式或变量的结果

<%= i %> <%= obj.toString() %>

​ 代码段:用于写java代码片段(类似于方法)

	<% 
		int j=0;
		j++;
		System.out.println("j="+j);
	%>
2.3 jsp三大指令
2.3.1 page指令
<%@page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.*" %> <!-- 导包 -->
<%@page errorPage="error.jsp" %> <!-- 设置异常跳转页面 -->
2.3.2 include指令

在翻译阶段将外部文件的内容和当前jsp合并

<%@include file="header.jsp"%>
2.3.3 taglib指令

导入标签库,perfix属性设置前缀,uri属性指定标签库的位置

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
2.3.4 九大内置对象

request、response、pagecontext、session、application、config、out、page、exception

request:HttpServletRequset的对象,获取请求数据
response:HttpServletResponse的对象,返回响应数据
pagecontext:页面上下文对象,javaweb域对象,可以访问所有的内置对象
page:当前jsp页面的“this”,当前对象
session:HttpSession的对象,用户访问时建立回话对象,分配唯一的sessionID
application:ServletContext的对象,javaweb域对象,所有用户用一个
config:相当于ServletConfig,记录配置信息
out:向客户端发送文本数据
exception:异常对象,只能在异常页面使用
2.3.5 jsp动作标签
包含指定的页面
<jsp:include page="header.jsp" />
转发到指定页面
<jsp:forward page="b.jsp" />
向其他页面传递参数
<jsp:include page="/b.jsp">
    <jsp:param value="zhangSan" name="username"/> 
</jsp:include>
注入bean
<jsp:useBean id="user" class="com.entity.User"></jsp:useBean>
为指定bean设置属性
<jsp:setPropertry property="username" name="user" value="xiaoming"></jsp:setPropertry>
获取属性值
<jsp:getPropertry property="username" name="user"></jsp:getPropertry>

3. EL表达式

通过${参数}替代<%= 参数 %>

EL操作四大域的内置对象:

pageScope,requestScope,sessionScope,ApplicationScope

${pageScope.user}:输出pageContext.getAttribute("user")
${requestScope.user}:输出request.getAttribute("user");
${sessionScope.user}:输出session.getAttribute("user");
${applicationScope.user}:输出application.getAttribute("user");

4. JSTL标签库

输出字符串aaa,输出属性aaa

<c:out value=“aaa”/> <c:out value=“${aaa}”/>

创建var变量并赋值

<c:set var=“a” value=“hello”/>

判断条件

<c:if test=“条件” ></c:if >

遍历

<c:forEach >

5. JavaWeb三大组件

5.1 Servlet
5.2 Filter过滤器
5.3 Listener监听器

6. JDBC

JDBC就是java数据库连接,用java语言操作数据库。

JDBC的核心类有:DriverManager,Connection,Statement,ResultSet

6.2 JDBC访问数据库的步骤

引入必要的类,加载注册JDBC驱动程序,标示数据源,分配一个Connection对象,分配一个Statement对象,使用Statement对象操作数据库,从返回的ResultSet对象中获取数据,关闭ResultSet对象,关闭Statement对象,关闭Connection对象。

	//加载驱动
    Class.forName("com.mysql.jdbc.Driver")
    //获取连接
    Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1”,”root”,123);
    //得到声明
    Statement stmt = con.createStatement();
    //sql语句
    String sql = “insert into user value(’zhangSan’,123);
    //执行更新sql
    int m = stmt.executeUpdate(sql);(这里的m指的是影响的行数)
    //执行查询sql
    ResulSet rs=stmt.executeQuery(sql);
    rs.next();
    rs.getString(下标);(下标是从1开始,而不是从零)
	//关闭流
    rs.close();
	stmt.close();
	con.close();                                           
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值