MVC设计模式-jsp

文章目录

  • MVC
    • JSP:java server pages
      • 支持中文的编码
      • jsp组成
      • 服务器跳转和重定向
      • jsp内置对象
        • request
        • response
        • session会话
        • application
        • 存储空间对比
    • JSP进阶
      • EL表达式
        • 格式${}支持

MVC

MVC设计模式-jsp_第1张图片
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("");
	out.println("计算结果:"+c);
	out.println("");
%>
  • 2、声明:<%!%> 声明变量

  • 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");
	%>
	
	获取连接客户端的地址信息:<%=request.getRemoteAddr() %>
获取连接客户端的主机信息:<%=request.getRemoteHost() %>
获取连接客户端的端口信息:<%=request.getRemotePort() %>
获取访问的项目名:<%=request.getContextPath() %>
获取访问的类型:<%=request.getContentType() %>
获取服务的协议:<%=request.getScheme() %>
获取服务的ip:<%=request.getServerName() %>
获取服务的端口:<%=request.getServerPort() %>
获取连接请求的地址信息(绝对):<%=request.getRequestURL() %>
获取连接请求的地址信息(相对):<%=request.getRequestURI() %>
获取参数:<%=request.getParameter("name") %>
//获取表单提交的参数 获取键值对:<%=session.getAttribute("name1") %>
获取get方法的值:<%=request.getParameter("sex") %>

设置请求编码

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中设置,单位是分钟


		10
	

注销当前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}
request域name:${requestScope.name}
session域name:${sessionScope.name}
application域name:${applicationScope.name}
  • 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}
  • ${对象.属性}实际调用get方法 属性首字母大写 name getName
  • el解析属性过程 get()方法->方法->方法首字母小写 例:getName()->Name()->name

你可能感兴趣的:(java)