总结我们JSP控制器的写法,把Java代码写到JSP中,虽然简单方便但是存在诸多问题,比如JSP中的Java代码不会报语法错误、自动导包老是会忘记、运行报错提示不友好、用作控制器的JSP只是编写Java代码,希望能在展示数据上有更好的表现。因此,有了一个想法:JSP的控制器能否用Java类的形式进行编写?答案是可以的。JavaWEB的开发模式有model1 和 model2模式,model2开发模式中控制器的代码完全写在Java类中,这个Java类叫做Servlet。Servlet是服务器端运行的Java程序,可以接收客户端请求并做出响应,动态生成需要的数据对客户端进行响应。
JSP和Servlet的关系是,JSP在运行期间因为内部包含java代码需要编译,最终会被编译成一个class执行,JSP继承于org.apache.jasper.runtime.HttpJspBase类,而HttpJspBase又是继承自HttpServlet的类,所以JSP在运行时会被Web容器翻译为一个Servlet。
使用Servlet时,首先需要编写需求页面,如登录页面,登录成功页面,登录失败页面。其次,创建Servlet,可以创建com.hnxy.controller包,选择"new"->"other",选择servlet,给Servlet起名,如UserLoginAction,填写一些Servlet的描述信息,注意URL mappings与页面action地址保持一致,选择保留doGet和doPost方法。最后,调试运行Servlet,观察运行结果。
Servlet的结构包括HttpServlet,它继承自GenericServlet,并实现了Servlet和ServletConfig接口;ServletConfig接口在Servlet初始化过程中获取配置信息;GenericServlet抽象类提供了Servlet与ServletConfig接口方法的默认实现;HttpServlet抽象类继承自GenericServlet,处理HTTP协议的请求和响应。
Servlet运行原理是,首先Tomcat开启,运行我们的web应用,访问登录页面,点击登录按钮时,Tomcat创建request对象向服务器地址发起一次请求,通过web.xml文件配置,确定需要哪个Servlet处理请求。通过页面请求分析,客户端请求被特定的Servlet拦截并处理。Servlet是类的实例,根据页面请求方式调用doGet()或doPost()方法处理业务,最后将结果转发或重定向到下一个页面。
注意几个关键点:页面action的地址需要加/拦截;servlet类的全限定名称配置;XML配置文件中进行配置工作;一个类能成为Servlet必须继承HttpServlet并在XML中配置;注解配置简化了Servlet的配置,使用@WebServlet注解。
注解是JDK1.5及以后版本引入的特性,用于编写文档、代码分析、编译检查。它们不会直接影响程序语义,但可以通过反射机制访问元数据。元数据的作用包括编写文档、代码分析、编译检查。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。