手机网站信任从哪里设置,如何做网站网页费用,网络科技有限公司有哪些,合肥制作网站#xff08;在一个完整的项目架构中#xff0c;servlet的角色和位置#xff09;
Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念#xff0c;它们共同构成了基于Java的服务器端程序的基础。以下是具体分析#xff1a;
1. Servlet接口… 在一个完整的项目架构中servlet的角色和位置
Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念它们共同构成了基于Java的服务器端程序的基础。以下是具体分析
1. Servlet接口 - 提供了生命周期方法init()、service()、destroy()和其他用于获取配置信息的方法。 - 是所有Servlet的根定义了Servlet的基本框架和必须实现的方法。
2. GenericServlet抽象类 - 实现了Servlet接口并提供了这些方法的默认实现包括init()和destroy()方法的空实现。 - 是一个抽象类要求继承它的自定义Servlet类必须实现service()方法。
3. HttpServlet抽象类 - 继承自GenericServlet进一步简化了HTTP特定的处理例如get和post请求的处理。 - 包含了处理HTTP协议的方法如doGet()、doPost()等使得创建特定于HTTP的Servlet变得简单。
总的来说这三者的关系和特性为Java Web开发提供了强大的动态内容生成能力允许开发者根据HTTP请求的类型和内容灵活地生成响应。在实际开发中选择合适的父类继承或实现相应的接口可以大大影响Servlet的开发效率和应用的性能
下面是案例
在web目录下创建login.jsp文件并写入前端要显示的页面。
%--Created by IntelliJ IDEA.User: 21222Date: 2024/7/29Time: 上午10:35To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
div classbox stylewidth: 250px; height: 300px; background-color: bisqueh1学生信息管理系统登录页/h1
%--
这里的action就是webservlet注解里写的名字运行后会自动到后端寻找
method就是请求方法post或者get--%form actionlogin methodpost账号input typetext nameuserbr密码input typetext namepwbrbutton登录/button/form
/div
/body
/htmlwebServlet注解一定要加 / 否则运行会报工件错误
如果需要接受中文参数到后端在处理参数的第一行就要对编码进行设置设置如下。
在这里进行逻辑判断账号密码输入正确跳转到LoginSuccess错误就跳转到LoginFailed
注这里从数据库获取数据我用的是mybatis,测试随意
WebServlet(/login)
public class UserRes extends HttpServlet {//收参数Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding(UTF-8);resp.setContentType(text/html;charsetutf-8);String user req.getParameter(user);String pw req.getParameter(pw);System.out.println(user user);System.out.println(pw pw);ListAdmin admin GetMapper.mapper.selectAdmin(user, pw);if (!admin.isEmpty()) {req.getRequestDispatcher(LoginSuccess).forward(req, resp);} elsereq.getRequestDispatcher(LoginFailed).forward(req, resp);}
}当login失败时跳转到这个界面通过后端渲染数据传给前端
WebServlet(/LoginFailed)
public class LoginFailed extends HttpServlet {//收参数Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求的字符编码为UTF-8以确保接收到的数据正确解码。//设置响应的内容类型为text/html;charsetutf-8告诉浏览器返回的内容是HTML格式并使用UTF-8字符集。//获取响应的PrintWriter对象用于向客户端发送数据。req.setCharacterEncoding(UTF-8);resp.setContentType(text/html;charsetutf-8);PrintWriter wr resp.getWriter();wr.write(!DOCTYPE html);wr.write(html);wr.write(head);wr.write(meta charset\utf-8\);wr.write(titleLogin Failed/title);wr.write(/head);wr.write(body);wr.write(h1 stylecolor:red; font-weight:boldLogin Failed/h1);wr.write(/body);wr.write(/html);}
}当login成功时跳转到这个界面。
WebServlet(/LoginSuccess)
public class LoginSuccess extends HttpServlet {//收参数Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println(\登录成功\ 登录成功);ArrayListStudent students GetMapper.mapper.selectAll();System.out.println(students students);}
}