MVC设计模式-jsp

MVC

在这里插入图片描述
M:Model 模型层,数据库底层操作和数据封装
V:View 视图层,获得模型层提供的数据,并在交互页面(jsp)进行展示
C:Control 控制层,进行后台业务处理,模块调用,路径导航等

pojo类的定义:

  • 1、共有私有的属性
  • 2、公共静态非静态方法
  • 3、对外访问属性的方法
  • 4、空构造 全构造(不带id)完成实例化
  • 5、重写toString()(非必须)

JSP:java server pages

服务页面 在HTML页面中内嵌java
404:页面找不到 往往是URL指引的资源不存在,一般处理方法:检查路径 检查防火墙 检查其他拦截设备 检查…

支持中文的编码

  • UTF-8 全球
  • gbk:简体 繁体 big 繁体 gb2312 简体

jsp组成

  • 1、小脚本<% java语言%> 页面中的一段小程序 out.print()
<% 
	int a=1;
	int b=2;
	int c=a*b;
	out.println("<font color='red' size='5'>");
	out.println("计算结果:"+c);
	out.println("</font>");
%>
  • 2、声明:<%!%> 声明变量
<!% String name="zhang"; %>
  • 3、表达式<%=内容%> 输出
<%="zhang"%>
<%=name%>
  • 4、指令:<@% %> 引入外部资源
<@% page language="java" import="java.util.*" %>  导包
  • 5、标准动作
  • 6、内置对象
  • 7、EL
  • 8、JSTL

服务器跳转和重定向

  • 服务器跳转:server.jsp----实际页面:error.jsp 多了一层request
  • 重定向跳转:error.jsp----实际页面:error.jsp
  • 只能使用一个,不能同时使用
response.sendRedirect("error.jsp");//重定向页面,可以让最终响应页面发生变化
request.getRequestDispatcher("error.jsp").forward(request,response);//服务器跳转

jsp内置对象

jsp页面中内置类或者接口对象 可以直接使用

  • 1、page:当前页面对象,相当于this
  • 2、pageContext:当前页面存储空间,可以存变量
  • 3、config:提供一种可以访问的配置文件路径
  • 4、exception:页面出错时,产生的错误信息对象
  • 5、out:java.io.PrintWriter类的对象
  • 6、request:请求 (用户向服务器发出的一次访问请求)
  • 7、response:响应 (服务端向客户端反馈的一次响应)
  • 8、session:会话 请求和响应为一次会话
  • 9、application:应用 提供公共访问区域(常用来计算流量和在线数)
  • 10、cookie:计算机里存储基本信息的(密码。。。)
    get:通过URL传值来提交数据快捷但不安全,post与此相反
    URL超链接传递的参数和表单提交的方式一致
request
	<%
		session.setAttribute("name1","ruirui");
		request.getSession().setAttribute("name2","zhang");
	%>
	<form action="server.jsp" method="post">
		<input type="text" id="username" name="name"/>
		<input type="submit" value=" 提交 ">
	</form>
	获取连接客户端的地址信息:<%=request.getRemoteAddr() %><br>
	获取连接客户端的主机信息:<%=request.getRemoteHost() %><br>
	获取连接客户端的端口信息:<%=request.getRemotePort() %><br>
	获取访问的项目名:<%=request.getContextPath() %><br>
	获取访问的类型:<%=request.getContentType() %><br>
	获取服务的协议:<%=request.getScheme() %><br>
	获取服务的ip:<%=request.getServerName() %><br>
	获取服务的端口:<%=request.getServerPort() %><br>
	获取连接请求的地址信息(绝对):<%=request.getRequestURL() %><br>
	获取连接请求的地址信息(相对):<%=request.getRequestURI() %><br>
	获取参数:<%=request.getParameter("name") %><br>//获取表单提交的参数
	获取键值对:<%=session.getAttribute("name1") %><br>
	获取get方法的值:<%=request.getParameter("sex") %><br>

设置请求编码

request.setCharacterEncoding

get方式提交表单乱码处理:

在Tomcat的配置文件sever.xml中 加上URIEncoding="UTF-8"

在这里插入图片描述
post方式乱码处理

	<%
		String name=request.getParameter("name");
		if(name!=null){//需要判null
			name=new String(name.getBytes("iso-8859-1"),"utf-8");
		}
		out.println(name);
	%>
response
	<%
		response.setCharacterEncoding("UTF-8");//设置响应的编码
		response.sendRedirect("error.jsp");//重定向页面,可以让最终响应页面发生变化
		response.getRequestDispatcher(目标页面).forward(request,response);//服务器跳转,保留request和response的信息
	%>
session会话

服务端保留的一块区域,一次会话包含多个请求响应过程

<%
	session.setAttribute(String,Object);//设置键值对
	
%>
<%=session.getAttribute(String) %>//获取键值对信息

设置session过期时间
session.setMaxInactiveInterval(Integer);//设置过期时间
或在web.xml中设置,单位是分钟

<session-config>
		<session-timeout>10</session-timeout>
	</session-config>

注销当前session对象

session.invalidate();
application

应用上的一片区域,重新部署,服务器重启后重置,通常统计在线人数等

application.setAttribute(String,Object);//application域中存放键值对
application.getAttribute(String)//application域中获得键值对
存储空间对比

application>session>request

JSP进阶

EL表达式

一种新型的表达式语言,用来替代out.println

格式${}支持
  • 字面值
  • 字面值+运算符 数字+数字运算符, 字符串不支持, 逻辑运算符 三元表达式
  • 在内置的页面四大空间取值:
    1、pageContext>2、request>3、session>4、application
    el表达式会从四个空间中遍历所寻键值信息
    四大空间可以指明:.pageScope .requestScope .sessionScope .applicationScope
	pageContextname:${pageScopename}<br>
	request域name:${requestScope.name}<br>
	session域name:${sessionScope.name}<br>
	application域name:${applicationScope.name}<br>
  • param属性值,表单提交的值,URL传递的值都在param中,可以${param.属性}取值
  • 逻辑运算符的优化 < > = >= <= == !=
项目Value
==eq
>gt
<lt
>=ge
<=le
!=ne
  • $ {对象} 相当于调用toString(),访问对象属性${对象.属性} ${对象[属性]} ${对象.方法()}调用方法
	pojo.User user=new pojo.User("zhangrui",21,"男");
	session.setAttribute("user",user);

	用户:${user}<br>
  • ${对象.属性}实际调用get方法 属性首字母大写 name getName
  • el解析属性过程 get()方法->方法->方法首字母小写 例:getName()->Name()->name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值