J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析
来源:互联网 发布:window 端口管理工具 编辑:程序博客网 时间:2024/05/01 17:25
关于Servlet的基础内容在前面已经和大家分享过了,参考J2EE学习从菜鸟变大鸟之七 Servlet,现在结合到DRP中学习,深刻的体会Servlet起到了枢纽中转的作用,控制逻辑(到MVC中更像是控制器),特别类似做BS项目时后台asp.net中的一般处理程序:前台html获取的数据把数据--->一般处理程序-->经过一般处理程序传递过来到数据库中查询---一>般处理程序--->界面,浏览器渲染后显示。
Servlet是服务器端的小程序,在BS架构下,用于处理客户端请求的响应的处理,期特点单实例,多线程的方式运行,servlet在容器中运行,其生命周期由tomcat来管理,线程是不安全的,在使用它时需要注意的是慎用成员变量(不安全的).
Servlet是在服务器端上(我现在使用的是Tomcat)
前端的Html
<html><head><title>登录</title></head><body><!--<form action="http://127.0.0.1:8080/test_servlet/loginServlet">--><form action="exam/loginServlet" method="post">用户:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="登录"></form></body></html>
Servlet:
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class LoginServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username=" + username); System.out.println("password=" + password); response.setContentType("text/html;charset=GB18030"); //response.getWriter().println("Login Success!!!"); //response.getWriter().println("登录成功!!!"); response.getWriter().println("<html>"); response.getWriter().println("<head>"); response.getWriter().println("<title>登录信息</title>"); response.getWriter().println("</head>"); response.getWriter().println("<body>"); response.getWriter().println("欢迎【" + username + "】用户登录成功!!!"); response.getWriter().println("</body>"); response.getWriter().println("</html>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
通过xml需要配置servlet
<?xml version="1.0" encoding="ISO-8859-1"?><web-app 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_3_0.xsd" version="3.0"> <servlet><servlet-name>MyServlet</servlet-name><servlet-class>LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><!--<url-pattern>/loginServlet</url-pattern>????????--><url-pattern>/exam/loginServlet</url-pattern></servlet-mapping></web-app>
在地址栏中输入地址:http://127.0.0.1:8080/test_servlet/login.html,读取到登录的页面如下图
Tomcat收到
成功登录:
整个实现的流程
整个流程:
当点击html中的submit后,则按照action对应的相对路径http://127.0.0.1:8080/test_servlet/loginServlet找到web.xml文件中<servlet-mapping>的<url-pattern>中的loginServlet,在根据<servlet-name>为loginServlet找到<servlet>中<servlet-name>为MyServlet的,然后生成一个LoginServlet的实例,再调用LoginServlet的doPost方法,在浏览器上显示结果。
结合UML图深刻理解:
总结
servlet处理逻辑既让结构清晰又易于编写代码和维护,系统更加的灵活;我们基本就是实现了对扩展开发,对修改封闭的原则。
等接触到MVC之后再来进一步深入的讨论,期待……
- J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析
- J2EE学习从菜鸟变大鸟之七 Servlet
- J2EE学习从菜鸟变大鸟之四 JNDI(Java Naming and Directory Interface)
- J2EE学习从菜鸟变大鸟之五 JDBC(Java Data Base Connectivity)
- J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件
- [置顶] J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件
- J2EE学习从菜鸟变大鸟之八 企业级项目开发的思考
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
- Java学习从菜鸟变大鸟之二 输入输出流(IO)
- Java学习从菜鸟变大鸟之三 多线程中Thread 和Runnable的区别与运用
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
- 【设计模式】从菜鸟到大鸟之工厂三姐妹
- 【设计模式】从菜鸟到大鸟之命令模式
- J2EE进阶之servlet 九
- 【设计模式】从菜鸟到大鸟之《大话设计模式》初体验
- 【设计模式】从菜鸟到大鸟之23个模式整体观
- 【设计模式】从菜鸟到大鸟之OOTV杯大赛评委
- 进程入门之sendessage(2)
- 考数据库系统会用到的一些计算方法和题目整理(3)
- 第二周作业
- 我要开始写博客了
- 简单事件处理程序
- J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析
- 各种I/O模型的比较
- 关于统计ascii码文本中英语单词的出现频率的c++实现
- 浅谈C#托管程序中的资源释放问题
- linux从指定行数查看文件内容
- ES PS TS 流的区别
- java学习总结——第四天(下)
- 利用 JSP 2 提供的 SimpleTagSupport 开发自定义标签
- hdu 1007 寻找最近点对