Servlet进阶和JSP基础

Servlet

概念: 服务器端小程序
作用:1) 处理请求 2) 返回响应
运行环境:Tomcat (apache) 8.5 支持servlet 3.1
Tomcat: 目录结构
bin 脚本目录 startup.bat shutdown.bat(ctrl+c)
conf 配置目录 默认端口8080, server.xml 搜索8080 然后修改
logs 日志目录
webapps 应用程序目录
编写servlet
* java类要继承 HttpServlet
* 在servlet类上添加注解 @WebServlet(urlPatterns="/servlet路径")

        4行

http://ip地址:8080/servlet路径?参数名=参数值 (get请求)

* 重写(覆盖)

        13行

public void service(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, IOException {
	// 1. 处理请求
	request.setCharacterEncoding("utf-8"); // 设置解码字符集
	request.getParameter("参数名"); // 返回参数值 String		
	
	
	// 2. 返回响应
	response.setContentType("text/html;charset=utf-8"); // 设置响应的内容格式,及字符编码
	PrintWriter w = response.getWriter(); // 拿到字符输出流
	w.println("html代码");
}

1. servlet 的生命周期

浏览器首次向此servlet发送请求时,会创建它的实例对象;以后再发送请求使用的仍然是第一次创建的对象。
结论:整个生命周期中,servlet只有一个实例(单例的)

  1. 构造方法首先执行(只执行一次)
  2. 初始化方法init (只执行一次)
  3. 服务方法 service (反复被执行)来一次请求执行一次
  4. 销毁方法 destroy (只执行一次)在服务器停止前,或重新部署时

2. doGet与doPost

覆盖service方法,可以处理所有类型的请求
覆盖doGet方法,仅能处理get方式的请求
覆盖doPost方法,仅能处理post方式的请求

3. 练习,把数据库中的数据展现在页面上

一个java web项目:
|-
|-WEB-INF (受保护不能直接访问)
|-classes 放自己编写的java类
|-lib 放第三方的jar包
|-css 放样式表
|-js 放js脚本
|-jsp 放网页文件
|-index.jsp 首页面 如果没有写具体的地址,会按 index.html, index.jsp

注意:在一个项目内,多个servlet的urlPatterns不能重复,要确保唯一

使用serlvet生成html标签,代码难以维护,可读性差,容易出错。

4. jsp

java server page
用途:主要用来生成html标签

在表现形式上类似于html 但多了一行

        2行

<%@ page contentType="text/html;charset=utf-8" %>

上面的代码称为 page 指令,主要作用就是指明此页面是一个jsp页面,并且通过contentType说明他的字符编码和格式
jsp 中有

  1. 指令: <%@ 指令名 %>
  2. 脚本: <% 可以是任意java代码 %>
  3. 表达式: <%= 表达式 %> 把执行结果显示在页面上

5. EL表达式语言

expression language 在jsp用来展示结果的语言
语法
${ 表达式语言 }

要用el表达式显示复杂的内容,需要把内容提前放入作用域, el再从作用域中把内容取出来显示
// 设置属性
pageContext.setAttribute("名称", Object); // 把内容起一个名字放入作用域

之后就可以通过EL表达式
${pageScope.名称}

el表达式可以通过
${对象.属性名} 但这里的属性名,依据是对象的get方法,而不是私有属性名
把get方法中get去掉(或把is方法的is去掉),剩余的单词首字母小写,作为对象的属性名,例如

getName() ==> name
getUsername() ==> username
getHelloWorld() ==> helloWorld
isClose() ==> close

6. JSTL

java 标准标签库
java standard tag library

主要的工具就是配合el表达式,实现循环,条件判断等功能
前提: 加入jstl-1.2的jar包
导入标签库
<%@ taglib uri="标签库唯一标识" prefix="前缀" %>

6.1 forEach

        4行

<c:forEach items="要遍历的集合" var="临时变量名" begin="起始数字" end="结束数字">
	${临时变量名}
</c:forEach>

要遍历的集合 必须使用${} 从作用域获取

6.2 if

        2行

<c:if test="布尔条件">内容</c:if>

7. MVC 思想

Model 模型 ==> 数据(例如从数据库查询出来的list集合, 里面包含java对象)
View 视图 ==> 数据的展现形式 (jsp就是一种视图技术)
Controller 控制器 ==> 把模型和视图联系起来 (servlet 充当控制器作用)

由servlet器查询数据,把数据放入作用域,跳转至jsp视图
jsp视图从作用域中获取数据,并展示

注意: 服务器常见的错误类型
500 Internal Server Error 服务器内部错误,由于应用程序自己没有正确处理异常,异常抛给了tomcat,这时就会出现500
404 Not Found 资源未找到错误,发生于要访问的资源不存在(资源可能是servlet, jsp, html)
405 Method Not Allowed 方法不支持,
当没有覆盖doGet但发送了get请求时
当没有覆盖doPost但发送了post请求时
200 OK 表示这次请求正常,没有错误
304 这个文件没有修改,请浏览器使用上一次缓存的文件

这些数字称为响应状态码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用说明: Setv_pnProxy是一款可以自动创建ppoe、v_pn[支持协议p p t p/l2tp/sstp/ikev2]和设置IE代理IP的小工具仅使用cmd命令行、批处理、编程方式运行本程序时添加相关参数即可即时生效带设置返回值并且不弹出连接窗口。 参数说明:参数返回:true表示设置成功[或连接成功],False表示设置失败或者已断开连接 1、代理IP功能: 设置代理IP参数示例:setproxy=127.0.0.1:80 取消代理IP参数:closeproxy 2、自动拨号功能: 设置拨号类型:settype=ppoe/v_pn 设置拨号名称:setname=宽带连接 设置拨号账号:setuser=账号 设置拨号密码:setpwd=密码 设置virtual**拨号服务器:setv_pnserver=127.0.0.1 设置virtual**拨号协议:setv_pntype=p p t p/l2tp/sstp/ikev2 断开拨号连接:closev_pn 使用示例1:如创建一个名为“宽带连接”的ppoe拨号连接并使用账号“huzi”与密码“1234”进行自动拨号 在cmd下运行Setv_pnProxy.exe settype=ppoe setname=宽带连接 setuser=huzi setpwd=1234 使用示例2:如创建一个名为“v_pn连接”的v_pn拨号连接使用p p t p协议、服务器127.0.0.1、账号huzi、密码1234进行自动拨号 在cmd下运行Setv_pnProxy.exe settype=v_pn setname=v_pn连接 setv_pntype=p p t p setv_pnserver=127.0.0.1 setuser=huzi setpwd=1234 使用示例3:如仅使用现有的名为“v_pn连接”、账号huzi、密码1234进行自动拨号 在cmd下运行Setv_pnProxy.exe /d setname=v_pn连接 setuser=huzi setpwd=1234

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值