java web——servlet+jsp实现前后台交互
2017-09-06 17:24
471 查看
大学生涯终于结束,在公司学习了一段时间的java web方面的知识,结合自己之前的一些理解,想通过几篇文章来对我所接触到的java技术进行梳理与总结,也希望能给大家一些参考,由于作者水平有限,难免存在一些不足之处,希望能一起探讨!
用户浏览器操作发出http请求->web容器接收到请求->按照一定方法分配给指定的Servlet进行处理->Servlet将处理的结果反馈给浏览器进行显示
在eclipse中创建一个Servlet,如下所示:
可以看出该类继承于HttpServlet,并存在两个主要方法doget和dopost方法,分别来响应get和post请求来处理相应的业务,最后通过sendirect或者forward的方式跳转到想要去的jsp页面。
那么有一个问题了,既然二者相似那么为什么还要分出两个东西,其实用jsp我们完全可以实现一个简单的小网站,需要Servlet的原因就是为了前后台的分离,也就是所谓的解耦,web技术发展的很大一个推动力就是为了解耦,很多的技术都是为此而具有巨大优势,解耦的好处①提高问题的解决概率;②提高问题的解决效果;③提高问题的解决速度;④降低将来爆发隐患的可能性。下面我们通过一个小例子来了解servlet+jsp的实现。
新建工程,创建一个jsp页面:index.jsp,在body中我们加入一个连接,连接到相应的Servlet
下来创建Servlet:myFirstServlet,并在servlet中作出一些处理并反馈
这里需要在web.xml中进行配置
Servlet来实现无疑是繁琐冗余的,因此它有不足之处。jsp技术仍然在应用但是也很少在jsp代码中写大量java代码,也是为了解耦。
1、servlet
Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。Servlet本质就是一个服务端的java对象,在这个对象中有一些方法来对浏览器的请求进行处理,并反馈给浏览器。1.1 Servlet与Servlet容器
首先我们应该理解Servlet与Servlet容器的区别与联系,Servlet容器是用来管理众多Servlet的,有个比喻很好,Servlet容器和servlet就和枪与子弹的关系一样,互相依存但又互相独立,在tomcat中Servlet容器所对应的部分是Context容器,而一个web应用对应一个Context容器,因此一个web应用只有一个Servlet容器。在这里不扯tomcat的内部实现方式,我们只需要记住Servlet容器所做的工作就是在程序运行开始之前对系统配置文件进行解析,将相关的Servlet对象、filter、lintener等信息进行整合与处理。1.2 Servlet使用
Servlet在http请求的整个处理过程中应该是如下过程:(其中在web容器中可以有若干个Servlet)用户浏览器操作发出http请求->web容器接收到请求->按照一定方法分配给指定的Servlet进行处理->Servlet将处理的结果反馈给浏览器进行显示
在eclipse中创建一个Servlet,如下所示:
package com.springmvc; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWorld */ @WebServlet("/HelloWorld") public class HelloWorld extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorld() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
可以看出该类继承于HttpServlet,并存在两个主要方法doget和dopost方法,分别来响应get和post请求来处理相应的业务,最后通过sendirect或者forward的方式跳转到想要去的jsp页面。
2、jsp
JSP全名为Java Server Pages,中文名叫java服务器页面,是一种动态网页技术标准,与传统的html不同,jsp是在服务端运行的,这里要明确一点jsp不是一种语言,而是一种技术,运用这种技术可以在html中用<% %>来实现java语言的书写,也就是在html页面实现了动态编程,但jsp页面还是属于前端页面部分。如下为新建的jsp页面:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> </body> </html>
3、Servlet与jsp
那么Servlet与jsp的关系到底是什么,为什么jsp页面中还可以写java代码,这就得从他们的运行机制说起。一个工程运行后会加载所有的Servlet对象,同事也会扫描所有的jsp页面,将jsp页面转化为Servlet,在进行统一处理,因此一个jsp页面实质上也就是一个Servlet。那么有一个问题了,既然二者相似那么为什么还要分出两个东西,其实用jsp我们完全可以实现一个简单的小网站,需要Servlet的原因就是为了前后台的分离,也就是所谓的解耦,web技术发展的很大一个推动力就是为了解耦,很多的技术都是为此而具有巨大优势,解耦的好处①提高问题的解决概率;②提高问题的解决效果;③提高问题的解决速度;④降低将来爆发隐患的可能性。下面我们通过一个小例子来了解servlet+jsp的实现。
新建工程,创建一个jsp页面:index.jsp,在body中我们加入一个连接,连接到相应的Servlet
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <a herf="myFirstServlet">click</a> </body> </html>
下来创建Servlet:myFirstServlet,并在servlet中作出一些处理并反馈
package com.lib.test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class myFirstServlet */ @WebServlet("/myFirstServlet") public class myFirstServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public myFirstServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub PrintWriter out; out=response.getWriter(); out.write("hello world!"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
这里需要在web.xml中进行配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>myFirstServlet</servlet-name> <servlet-class>com.lib.test.myFirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myFirstServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
4、结尾
在这里需要说明一下,Servlet与jsp技术尽管是web技术中非常重要的一项,但现在已经被替代,我们想一下为什么,在系统变复杂时所有的web交互都用Servlet来实现无疑是繁琐冗余的,因此它有不足之处。jsp技术仍然在应用但是也很少在jsp代码中写大量java代码,也是为了解耦。
相关文章推荐
- java web学生信息管理系统的实现及源码(jsp servlet)
- jsp+service+servlet+Oracle实现简单的数据库交互(登录注册)
- jstl与servlet动态jsp交互实现
- java web验证码生成总结(包括servlet、jsp和struts2实现)
- Android与webserver数据交互编程---3网络爬虫项目实现虚拟浏览器的jsp后台执行
- Android与web服务器数据交互编程---3网络爬虫项目实现虚拟浏览器的jsp后台运行
- java web学生信息管理系统的实现及源码(jsp servlet)
- 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
- 二、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
- java web验证码生成总结(包括servlet、jsp和struts2实现)
- java web验证码生成总结(包括servlet、jsp和struts2实现)(转)
- JSP如何与数据库交互?即JSP与后台Servlet之间的关系,如何交互
- 前台 jsp 与 后台 servlet 的数据交互问题
- JSP+Servlet+Ajax实现后台异步检验用户信息实例
- http,servlet,jsp-java web后台知识简单总结
- JavaWeb网站用Servlet实现前后台交互
- 通过jsp和servlet实现后台界面完成对数据库的增删改查
- Struts2+jquery 以ajax方式 实现jsp跟后台交互
- java web Servlet--实现文件下载功能
- jsp+servlet+commons-fileupload-1.3.jar+commons-io-2.4.jar+jstl标签库实现文件上传与下载