Java Servlet是一种使用Java编写的CGI程序
- CGI:通用网关接口
- 与传统的CGI不同,Servlet是一种多线程处理模式–性能较高
- 在Servlet中可以控制输出HTML代码,则所有的HTML代码必须使用out.println()一行一行输出
Servlet的生命周期
- 初始化(1次)
- public void init(ServletiConfig config) throws ServletException
Servlet初始化有两种方式
- init():当不需要传递初始化参数时使用
- init(ServletConfig config) :如果使用这种初始化方法,则上面的无参初始化方法无效,这种方式适用于需要传递初始化参数
- 服务(多次)
- doGet();表单和地址输入都为GET请求
- doPost(); 只有表单输入为POST请求
- 销毁(1次)
简单Servlet编写
- Servlet直接继承直HttpServlet
- 在doPost(doGet)方法中写入相应的程序代码
- 配置WEB.XML文件
- JSP程序的功能与Servlet一致,意味着Servlet程序同样可以被外部所访问,就必须有一个地址,这只能通过WEB映射解决
- 修改web.xml文件可以配置映射地址
//表示要使用一个Servlet
<servlet>
//在web.xml文件内部起作用的名字
</servlet><servlet -name>Simple</servlet>
//servlet程序所在包.类名称
<servlet -class>net.hialex.Servlet.SimpleServlet</servlet>
//servlet映射地址
<servlet -mapping>
//在web.xml文件内部起作用的名字,与上面的名字一致
</servlet><servlet -name>Simple</servlet>
//具体映射路径,前面必须要有一个/
<url -pattern>/demo</url>
- 注意:
- 在编译servlet时可能会遇到找不到servlet包的问题,这是因为servlet为JDK的扩展包,所以在使用时需要指定classpath
- 若不指定classpath可以将servlet.jar文件拷贝到JSK安装路径下的jre\lib\ext下
- 结论:在Tomcat中,存在servlet的全部库文件(%Tomcat_HOME%\lib\servlet-api.jar)
HttpServlet类
- 继承自GenericServlet类并增加了doGet()、doPost()等七个方法
- doGet()方法:当客户端发送get请求时就调用doGet()方法,HTTP缺省的就是Get
- doPost()方法:当客户端发送HTTP请求调用POST方法调用doPost()方法
对于一个基本的Servlet程序必须注意以下几点:
- 首先一定要符合Servlet程序的开发框架
- 配置web.xml文件
- Servlet的缺点是不适合输出大量的HTML代码
阅读全文…
alex Java classpath, get, Java, jsp, post, servlet, 语法
过年期间对自己要求有点放松了,好几天没看视频了,今天开始照常!
Application对象:属于javax.servlet.ServletContext,其作用是保存公共信息。
- 属性操作的三个方法:setAttribute(),getAttribute(),removeAttribute()
- 得到工作目录的真实路径的方法:Public String getRealPath(String path)此方法需要一个参数“/”
- Application是整个服务器中保持的只有一个实例的对象
- 在实际开发中经常使用getServletContext()去代替Application
out对象:
- out对象主要用于动态的向客户端输出数据
- 在JSP开发中要尽量少使用此对象
- 开发中的原则:
- HTML代码与JAVA代码分离,如果要输出,尽量使用表达式输出(<%=%>),要用(<%=%>)完全代替(<%Out.print();%>)
JSP安全性及Config对象的应用:
- JSP安全性:
- 在J2EE中安全性的体现:工作目录的WEB-INF文件夹
- 将页面放置到WEB-INF文件夹中下则页面无法被发现,提高了安全性,欲访问WEB-INF文件夹下的文件可以通过修改WEB.XML文件
- web.xml文件:属于整个WEB站点的配置文件
- 在web.xml文件中添加下列代码:
<servlet>
//在web.xml文件内部起作用与servlet-mapping关联
<servlet-name>test</servlet-name>
//找到jsp文件的路径,此路径一般保存在WEB-INF之中
<jsp-file>/WEB-INF/demo.jsp</jsp-file>
</servlet>
<servlet-mapping>
//在web.xml文件内部起作用与servlet-name完全一致
<servlet-name>test</servlet-name>
//网页上输入的实际路径地址
<url-pattern>/demo</url-pattern>
</servlet-mapping>
- 当此文件被修改之后必须重新启动服务器–因为服务器在启动时会读取此文件
- Config对象:属于javax.servlet.ServletConfig
- 要使用config对象的前提:JSP页面必须在web.xml中进行配置
- 在<servlet>与</servlet>中添加下列代码:<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
- <init-param></init-param> 可添加多个
- 如果要取得这些初始化参数,必须通过映射名称进行访问jsp页面,才可以取得初始化参数,通过config对象来取得
- 取得初始化参数的方法:public String getInitParameter(String name),通过这中功能可以将数据库连接的一些信息写在配置文件之中
- 常用的方法还有:public Enumeration getInitParameterNames()取得全部配置参数
alex Java application, config, Java, jsp, 安全性, 语法
include指令: <%@include file="uri"%> e.g.<%@include file="hello.jsp"%>
- include命令可以包含任意文件,它包含的是文件的内容。但是在一个jsp页面中,只能有一组<html>、<head>、<body>
- 原则:在开发中被包含的文件只写显示部分的HTML代码,主体代码不要出现
- 包含的时候不区分文件名称、后缀,只是将内容包含进来
包含语句<jsp:include>:
- <jsp:include page="uri" /> 或者 <jsp:include page="uri" flush="true"><jsp:param name="参数名称" value="参数值" /></jsp:include>
- 若使用后一种语句可以向被包含的页面之中传递参数,如果是传递参数,则所包含的页面必须是JSP页面,必须是动态页面
- 若包含的是JSP页面,则自动进行动态处理,若是非动态文件,则只是将内容包含进来
- 这种语句与HTML代码相似,称为标签指令形式
- 标签指令形式代码必须完结 </XXX:XXXX>
- 标签指令形式代码必须写在Scriptlet(<%…..%>)之外
<%@include file="uri"%>:只是将页面的内容静态的包含进来,若被包含的页面有JSP代码,则执行此代码而不管被包含的页面文件后缀如何 // 先包含后处理
<jsp:include page="uri"/>:若被包含的文件内容是静态的,则直接将内容包含进来,但是不处理,如果被包含的页面是动态的,则先执行,再把结果包含进来显示 // 先处理后包含
两者的区别:
- <%@include%> :所有代码包含进来,一起进行处理,把所有代码合在一起
- <jsp:include>:所有代码分别处理,处理完成之后再将代码的显示结果(处理结果)包含进来
跳转语句<jsp:forward>
- <jsp:forward page="uri" /> 或者 <jsp:forward page="uri" flush="true"><jsp:param name="参数名称" value="参数值" /></jsp:forward>
- <jsp:forward>也属于标签指令,使用也必须完结
- <jsp:forward>语句属于无条件跳转语句
- 使用此跳转语句,页面内容是进行了跳转,但是地址栏的地址没有变化,如果没有变化,意味着用户的请求依然没有改变,即<jsp:forward>属于服务器跳转
alex Java include, jsp, 指令, 标签指令, 语法
注释类型:
- 显示注释:HTML注释,此注释会发送到客户端
- 隐式注释:JAVA注释,此注释不会发送到客户端
在JSP中可以使用三种注释:
- <!– 注释内容 –>
- <% //JAVA注释内容 %>或者<% /*多行内容*/ %>
- <%– JSP注释 –%>
声明语句:格式:<%!声明语句%> 举例:<%!String text="Hello World!" %>
表达式:格式:<%=表达式%>,用来输出值,类似于out.println();
- 在实际开发中尽量少用out.println();输出而用<%=表达式%>,这么做的目的是达到HTML和JAVA代码的分离
脚本代码(Scriptlet):格式:<%代码段%>,用来写具体的JAVA代码或者声明局部变量
- <%! %>和<% %>声明的变量区别是:<%! %>只赋一次值
JSP是一种动态的WEB程序,必须有交互功能
HTML与服务器的交互主要途径是表单
JSP接受传递过来的参数的方法:String str=request.getParameter("参数名称");
所有的JSP代码最终都是拼凑出来的,不是固定的,由WEB容器拼凑出来的
form表单的提交方式:
- post:提交的内容不会被显示,没有长度要求
- get: 提交的内容会被显示出来,地址栏的长度只有4K~5K,大数据则无法显示
范例:打印一个表格,行数和列数由用户输入
阅读全文…
alex Java jsp, page指令, 语法
最新评论