尚学堂 老师好!

上海:15201841284

广州:020-2989 6995

深圳:0755-23061965

武汉:027-8798 9193

西安:029-8822 8155

课程从html到jsp MVC的一点小结

0.html实用

更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。

<!-- 注释 -->
body设置超链接 link 设置颜色 alink 设置鼠标按下时颜色 vlink 设置已访问后颜色
宽度为240px的分隔线<hr width="240"> 厚度为5<hr size="5"> 靠右<hr align="right">
使用标题标签时,如h1.该标签会将字体变成粗体字,并且会自成一行。 
一般预设字体大小为3,<font size=3>字体三</font> 
<u>底线</u>
<sup>上标</sup> <sub>下标</sub>
<cite>引用</cite> 效果为斜体帅气
特殊字元,称为字符实体:&copy;&reg;(注册)&radic;(对号)&yen;(人民币元)&sect;(章节);&quot;(双引号)
&nbsp;   (代表一个不断行空白)  
&lt; <  
&gt; >  
&amp; &  
&quot; "  
左边的字<img src="images/G-FASE4.GIF" hspace="15">右边的字
上面的字<br><img src="images/G-FASE4.GIF" vspace="15"><br>下面的字
<img src="boy.gif" alt="本站特约模特儿" align=right border=0 hspace=2 vspace=2 height=56 width=32> 与文字间距
连结标签的参数target 框窗名称 或者
target=_blank:将连结的画面内容,开在新的浏览视窗中。
target=_parent:将连结的画面内容,当成文件的上一个画面。 
target=_self:将连结的画面内容,显示在目前的视窗中。
target=_top:这个参数可以解决新连结的画面内容,被旧框窗包围的困扰,使用这参数,会将整个画面重新显示成连结的画面表格标题一般用<caption></caption>
内容。 
左右合并<TR><TD COLSPAN=3>1</TD></TR>
上下合并<TR><TD ROWSPAN=2>1</TD><TD>2</TD><TD>3</TD></TR>
<TR><TD>5</TD><TD>6</TD></TR>
文字对齐 <TR><TD ALIGN=CENTER>1</TD></TR>
表格内向上靠齐 <TR><TD ALIGN=CENTER VALIGN=TOP>1</TD></TR>
表格内颜色 <TR BGCOLOR=#FFCC33><TD>1</TD><TD>2</TD></TR>
颜色阴影 亮面设定,暗面设定
<TABLE BORDER="5" BORDERCOLOR="#0080FF" BORDERCOLORLIGHT="#62B0FF" BORDERCOLORDARK="#004B97">
CELLPADDING属性自由设定表格内文距离格线的距离,内定为2,设定4比较漂亮
<TABLE BORDER="1" CELLPADDING="10"><TR><TD>1</TD><TD>2</TD></TR></TABLE>
CELLSPACING属性设定表格栏位格线之间的距离。一般而言内定值为2,习惯设为 0 
无序标签UL<UL TYPE="CIRCLE">DISK(实心圆)、SQUARE(小正方形)、CIRCLE(空心圆)三种
有序标签OL<OL TYPE="A">1(数字)、A(大写英文字母)、a(小写英文字母)、I(大写罗马字母)、i(小写罗马字母)
我们亦可指定序列起始的数目<OL START="8">
表单
checked属性为boolean,使用radio或checkbox时使用,type="text"下设置readonly="readonly"只读,比如用户id
input 下 ALIGN指定对齐方式 MAXLENGTH="数值",是设定此一栏位可设定输入的最大长度。
单选radio及复选checkbox及下拉选单select name均相同
select option中selected初始被选中 无值
隐藏域隐藏栏位:<INPUT TYPE="HIDDEN" NAME="NOSEE" VALUE="看不到">
<TEXTAREA NAME="TALK" COLS="20" ROWS="3"></TEXTAREA>
框架
<FRAMESET COLS="120,*" frameborder=0 framespacing=5>
<FRAME SRC="a.htm" NAME="1" frameborder=0 scrolling="no" noresize marginhight=2 marginwidth=2>
<bgsound src="music.mid"> 可是用NetScape看就没有声音了最好用embed标签 <embed src="music.mid">

文件上载:
<form action="" enctype="multipart/form-data"  method="post">
请选择文件:<input type="file" name="filename"></form>

0.5javascript
浏览器中逐条解释执行,如果某条出错,后面无法执行
注释与java相同,特殊字符用/
五种原始变量类型:undefined String boolean null Number
使用typeof(object)获取类型
通过超链接调用js函数 <a href="javascript:"></a>
html中嵌入
<script language="javascript" type="text/javascript"></script>
alert若嵌入在双引号中用单引号,否则用双引号输出
document.write() 嵌入html代码
<a href="javascript:testDelete()">删除</a>注意函数名不要用到关键字,此处href不能直接嵌入js代码
js中数组长度不固定 var arr=new Array(1,2,3,"hh");

 

1.oracle sql 语句
查询
select * from db where id='5'
插入
insert into db(a,b,c) values('','','')
删除
delete from db where id='5'
更新
update db set a='',b='' where c=''

2.tomcat
C:/apache-tomcat-6.0.14/conf 查找8080,
修改端口号8888

myeclipse配置tomcat
lib包 myeclipse会自动添加 eclipse得手动加载
myeclipse-window-preferences-myeclipse-tomcat配置
myeclipse启动tomcat tomcat只能启动一次

3.servlet
servlet java代码中可以嵌入html,js 只要继承httpservlet就是servlet
servlet工作原理:单实例,多线程 只一次new init 线程池
每次请求执行service方法
出于安全考虑,servlet中很少写成员变量
servlet使用过程:配置服务器 新建产生servlet项目 发布到tomcat服务器 客户端访问
web.xml 从下往上寻找 客户发送请求url-pattern 地址找到servlet的java类 寻找字节码class
客户端访问 
https://Ip地址:端口/项目名/url-pattern
GenericServlet 实现Servlet接口通用协议 除了http协议外 HttpServlet类继承自GenericServlet
doGet doPost 具体实现一样,可以互相调用。
url pattern随心所欲 ,两个地址指向同一个servlet可以*.do通配

关闭 打开oracle服务:控制面板-管理-服务 oracle三个
最常用,加两句话:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
tomcat conf web.xml 支持显示类型  如查找pdf  <mime-mapping>
        <extension>pdf</extension>
        <mime-type>application/pdf</mime-type>
    </mime-mapping>
用于setContentType
   视频格式打开avi <mime-mapping>
        <extension>avi</extension>
        <mime-type>video/x-msvideo</mime-type>
    </mime-mapping>
拷贝他人代码时,更改web.xml 复制4段需改

servlet流操作
ServletInputStream ServletOutputStream
头信息设置,进行操作
response.setIntHeader("Refresh",30);刷新,单位为秒
response.setHeader("Refresh","20;url=www.baidu.com");跳转到XX

4.路径
action路径,绝对或者相对:去同取异 servlet/xx 不加斜杠,否则成绝对路径了
三种方式(根路径为服务器根目录):
<form action="
https://localhost:8888/ServletFix/servlet/ServletRequire" method="post">
<form action="/ServletFix/servlet/ServletRequire" method="post">
<form action="servlet/ServletRequire" method="post">

附:来自博客总结
1). <form action="abc.do" method="post">*********</form>,并且该页面的访问地址是
https://localhost:8080/yaso/login
   <form action="/abc.do" method="post">*********</form>,并且该页面的访问地址是https://localhost:8080/yaso/login
    此处可以使用相对路径或者绝对路径,其中相对路径是相对于当前访问的页面。当提交表单后,浏览器地址栏中的信息变为https://localhost:8080/yaso/abc.do
    如果使用绝对路径,则"/"是指服务器的根而非应用的根。如果将上述表单改为action="/abc.do",则当提交表单后,浏览器地址栏中的信息变为https://localhost:8080/abc.do
    如果要使用绝对路径可以使用getContextPath()方法。
2). 在web.xml中的<servlet-mapping>中的<url-pattern>标记中只能使用绝对路径,即必须要 以"/"开头。可以这样理解:一个应用对应于一个web.xml,所以这里的绝对路径表示应用的根,而不是服务器的根。(一个特殊情况就是 在<url-pattern>中使用模式匹配的*.do,但仍然应该理解成从/开始。)
3).RequestDispatcher view = request.getRequestDispatcher("/abc.jsp");
   RequestDispatcher view = request.getRequestDispatcher("abc.jsp");
    这里可以使用相对路径和绝对路径。相对路径是当执行到该代码所在的Servlet的时候地址栏上显示的路径。
    如果使用绝对路径,则"/"表示应用的根。
4).RequestDispatcher view = getServletContext().getRequestDispatcher("/abc.jsp");
    这里必须使用绝对路径,"/"表示应用的根。可以这么理解:在ServletContext上调用请求转发,如果使用相对路径,则无法得知到底相对于该应用的什么位置,只能根据绝对路径来判断。由于是在应用上下文上调用的方法,所以"/"就表示应用的根。
5).servletContext中的getResourceAsStream(String),其中的参数应该是以"/"开头的绝对路径,其中"/"表示应用的根。

5.关于error
(一般不用该方法)sendError 400以上可调,500以上服务器错误,严重
401授权错误
404错误表明路径填写不对
403资源无法访问
408请求超时
500服务器内部错误

6.重定向与转发
重定向
客户端浏览器,重新确定请求方向
 重定向:1)多个不同的请求对象 sendRedirect
  2)地址栏发生变化
  3)可以跳转到同一个服务器web应用下的任意页面或者其它服务器下的web应用,定向到任意资源
 转发:  1)只有一个请求对象request(客户端到服务器间)
  2)地址栏不发生变化
  3)只能跳转到同一个服务器web应用下的资源

重定向 路径可绝对路径,以/开头,相对于该项目根目录,无/开头时为相对路径,相对于当前路径
转发 各种实现方式路径不同
request.getRequestDispatcher("../login.html").forward(request, response);//转发方法一 跳出当前servlet
this.getServletContext().getRequestDispatcher("/servlet/Img").forward(request, response);//转发方法二
this.getServletContext().getNamedDispatcher("../login.html").forward(request, response);//转发方法三
注:对于根目录下的html页面,/代表服务器的根目录,得加上项目名,或者用绝对路径,从http开始
<form action="/ServletFix/servlet/ServletRequire" method="post">

UTF-8容易出乱码,用GB2312
小tip:errorpage屏蔽ie友好界面,显示尽可能长,加空格

7.过滤器
屏蔽、过滤、验证、统一事物
structs2中 所有请求经过过滤器
使用url-pattern指定待过滤文件
写一个普通的java类,实现Fliter接口即可 chain.dofilter往下传递

8.cookie
查看cookie internet选项
设置cookie存在时间 如两周不登陆
public void setMaxAge(int expiry)
public int getMaxAge()

9.String字符转换问题
int i=Integer.parseInt(str) 或者 int a=new Integer(str).intValue()
包装类与基本类型间自动装箱拆箱,无需转换

10.request session application pageContext
可以看做四个存储数据的容器,作用范围由小到大
HttpServletRequest request 同一个请求对象,重定向取不到
HttpSession session 同一个会话对象 反上 单浏览器会话内共享
ServletContext application 所有用户共享 web服务器关闭才失效
application得到的是上下文环境,全局视角 注意与pageContext相区分 
application可以通过pageContext得到 static field APPLICATION_SCOPE int值w为4
request中的数据是相对安全的,能用就用
application不安全

11.jsp
jsp将网页逻辑与网页设计、显示 分离
三个指令
<%@ page import=",," %>包含属性、库
<%@ inculde file="" %>包含文件内容
<%@ taglab uri="" %>自定义标签
<%-- --%>jsp注释
<%! %>变量声明及函数声明
<% %>脚本段 里面不能放函数,存在于一个生成的函数中
<%= %>表达式 变量值输出 等价于<% out.write(str) %>
jsp迭代:遇到标签跳出<%%>,甚至打印纯字符串 形散神不散
include指令
静态包含:重复部分定义一次 转换(成servlet)时期 包含进来 合成一个servlet
<%@ include file=”relativeURL”%>只写相对路径
include动作
动态包含 执行时包含进来 生成几个servlet文件
<jsp:include page=""></jsp:include>
(注:两个时机,转化成servlet,执行时 两个包含,指令包含,动作包含)

forward动作 转发 跳到另一个资源页面
param传参到下一个页面
如:
<jsp:param value="jack" name="username"/> request内置对象读取
<%=request.getParameter("username") %>

jsp内置对象
一共9个,不用自己声明
out   PrintWriter
config   ServletConfig
request   HttpServletRequest
response   HttpServletResponse
page   Object类型 用的很少
session   HttpSession
application   所有用户共享的全局数据 ServletContext
exception   Throwable
pageContext   PageContext 页面级别的存储变量 request同一个请求 session 同一个会话 application 所有用户
pageContext很重要
1)负责生成其它内置对象 同一个上下文环境
2)存储生成自己或其它领域内的数据

12.Enumeration
使用Enumeration 获取多个值
示例:
通常与Iterator接口功能重复,但与数据库交互时却常常用到
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
       System.out.println(e.nextElement());

13.javabean
现某些业务逻辑的java类
1)写在某个包中
2)有一个无参的构造方法
3)属性的命名规范如下
 属性:setXXX() getXXX() isXXX()
get set后的叫属性,把首字母小写 跟成员变量无关
页面整洁,便于美工看
javabean 三个 useBean setProp getProp 属性
<jsp:getProperty name="beanInstanceName" property="propertyName" />

<jsp:setProperty name="user" property="*" />
统一设置属性,跟表单保持一致即可
接着取值

14.EL表达式
属性
${requestScope }
.
[""]
混合使用
打印集合 从数据库中取出 list
${param.name} 获取表单参数 getParameter("name")中可以写运算符如&& >=...

15.Model
model1 小型 不用 jsp接受请求,javabean业务逻辑处理 功能叠加
model2 MVC的前身 Servlet+jsp+javabean
小结MVC(Model2):

jsp view只负责响应,数据显示
javabean model 负责业务逻辑 数据库处理
servlet controller 接受请求 调用相应业务逻辑 根据调用结果找到相应视图响应
具体实现时
视图层----控制层------service层------dao层----db
JSP       Servlet  javabean业务层  数据库连接
service与dao层方法一一对应,调用dao处理数据库
注:不允许从一个jsp跳到另一个jsp。必须经过servlet,也可以用普通java类代替javabean,反正要处理业务逻辑

单例模式: 构造方法私有 该类中产生惟一实例 上一层getInstance 获取该实例

16.其它
解决js css找不到加上basePath绝对路径: a href="<%=basePath%>servlet/xx?name=XX&...
涉及到数据类型转换时先判断是否非空,才转,否则抛出异常

更多精彩内容以及学习资料,尚学堂论坛bbs.bjsxt.com免费下载。
这次项目不用servlet/jsp 死代码 硬编码 项目用structs + jdbc 实现 一周半后开始

  • 北京校区
  • 西安校区
  • 山西校区
  • 武汉校区
  • 深圳校区
  • 上海校区
  • 广州校区
  • 保定招生办
  • 黑龙江项目办

北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE+微服务+大数据     大数据+机器学习+平台架构     Python+数据分析+机器学习  人工智能+模式识别+强化学习   WEB前端+移动端+服务端渲染

地址:陕西省西安市高新区西安软件园西区创新信息大厦A座三层尚学堂

电话:029-88228155 / 18291433445

山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

武汉学区地址:武汉市东湖高新区光谷金融港B22栋11楼
咨询电话:027-87989193

深圳校区地址:深圳市宝安区航城大道U8智造产业园U6栋3楼
咨询电话:0755-23061965 / 18898413781

上海尚学堂校区地址:上海市浦东新区城丰路650号
咨询电话:021-67690939

广州校区地址:广州市天河区车陂街道大岗路5号中侨广场2栋321室(四号线车陂站D出口,或brt车陂站)
咨询电话:18948349646

保定招生办公室

地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

电话:15132423123

黑龙江项目办
地点:哈尔滨市松北区博文路青年部落孵化器1层
电话:15321415678
Copyright 2006-2021 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183   营业执照
网站维护:北京尚学堂科技有限公司昌平分公司