开发者社区> 技术小美> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

网站用户登录验证:Servlet+JSP VS Struts书剑恩仇录

简介:
+关注继续查看
? 什么是Struts框架 
–从不同的角度看待Struts框架 
–Struts框架的优点
 
? 下载安装Struts框架 
–下载配置Struts框架 
–测试Struts框架 
–安装Struts应用程序 
–访问Struts文档
 
? Struts 中常用组件 
–ActionServlet 
–Action 
–ActionForm 
–ActionMapping 
–ActionForward
 
? 实例 
–以登录为例,比较servlet+jsp和Struts的区别和联系
-----------------------------START-----------------------------------
什么是Struts框架(从不同的角度看待Struts框架)
? 一个MVC设计模式框架? 
–Struts为使用Servlet和JSP来开发Web应用程序提供了一个统一的框架 
? 一个工具集合? 
–Struts 提供了一系列工具集合,来处理Web开发中的常见任务 
? 一个自定义标签工具集合? 
–Struts提供了一系列标签,包括html、表单、bean、条件判断等 
?仁者见仁,智者见智 
–但是Struts框架,最核心的称呼还应该是MVC框架
--------------------------NEXT----------------------------------------
Struts 框架的优点
? 基于配置文件的松耦合 
–在Struts框架中的通常类都被配置在一个配置文件当中(如:Action、Formbean、ActionForward等),和写在Java程序里的硬代码相比,耦合性降低了很多,在Servlet当中一般页面的跳转被写在Java程序当中,例如:request.getRequestDispatcher(“somepage”).forward(request,resp 
onse);
 
? Formbean的强大功能 
–在传统的Servlet+JSP当中,验证信息的重新显示必须有程序员来设置, 但是在Struts当中Formbean解决了这个问题。 
? 集中的验证 
–Struts提供的标签 
? 基本html标签 
? form表单标签 
? bean标签 
? 逻辑标签
 
? Struts的其他优点 
–对国际化的支持、声明式异常处理等。
----------------------------NEXT-----------------------------------
下载配置Struts框架 
? Struts 框架的下载站点 
– http://jakarta.apache.org/site/binindex.cgi 
– http://jakarta.apache.org/struts 
? 解压下载包,了解Struts的目录结构 
–Lib:jar文件 
–Webapps:web应用程序
安装Struts应用程序 
? 安装struts-blank.war 
–将该压缩包拷贝到tomcat的webapps目录下,重新启动tomcat,访问该工程: 
http://localhost:8080/struts-blanck
image 
? 安装struts-documentation.war 
–将该压缩包拷贝到tomcat的webapps目录下,重新启动tomcat,访问该工程: 
http://localhost:8080/struts-documentation
image
image
image
------------------------NEXT--------------------------------
Struts 中的组件介绍
? ActionServlet 
–Struts中的大控制器 
–Struts框架的入口 
–是对Servlet的封装,被配置在web.xml配置文件当中
 
? Action 
–小控制器,处理具体的业务逻辑用例 
? ActionForm 
–和表单对应的一个特殊的JavaBean,是一个“邮递员”在控制器和页面之间传递数据,也提供了一个集中的验证方法 
? ActionMapping 
–从Struts配置文件中读取配置信息 
? ActionForward 
–页面之间的跳转
------------------------------NEXT--------------------------------------
Struts 实例(以用户登录为例) 
? Servlet+JSP 版本的登录
 
–为了比较servlet+jsp和Struts的区别与联系,我们首先看一下servlet+jsp如何创建用户登录
login.jsp
image
successfull.jsp
image
failure.jsp
image
LoginServlet.java
image
测试:
redking帐号登录
image
登录成功!
image
非redking帐号登录
image
登录失败
image
-------------------------------------NEXT--------------------------------
下面通过数据库查询来验证用户登录哈~
DB
image
UserDao.java
image
UserDaoImpl.java
 image
LoginServlet.java
package com.redking.servlet;    

import java.io.IOException;    
import java.io.PrintWriter;    

import javax.servlet.ServletException;    
import javax.servlet.http.HttpServlet;    
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    
import javax.servlet.http.HttpSession;    

import com.redking.dao.UserDao;    
import com.redking.dao.impl.UserDaoImpl;    
import com.redking.vo.User;    

public class LoginServlet extends HttpServlet {    

        /**    
         * Constructor of the object.    
         */
    
        public LoginServlet() {    
                super();    
        }    

        /**    
         * Destruction of the servlet. <br>    
         */
    
        public void destroy() {    
                super.destroy(); // Just puts "destroy" string in log    
                // Put your code here    
        }    

        /**    
         * The doGet method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to get.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                doPost(request,response);    
        }    

        /**    
         * The doPost method of the servlet. <br>    
         *    
         * This method is called when a form has its tag value method equals to post.    
         *    
         * @param request the request send by the client to the server    
         * @param response the response send by the server to the client    
         * @throws ServletException if an error occurred    
         * @throws IOException if an error occurred    
         */
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)    
                        throws ServletException, IOException {    

                String username = request.getParameter("username");    
                String password = request.getParameter("password");    
                /*    
                if(username!=null&&username.equals("redking")){    
                        request.setAttribute("username", username);    
                        request.getRequestDispatcher("/pages/successfull.jsp").forward(request, response);    
                }else{    
                        request.getRequestDispatcher("/pages/failure.jsp").forward(request, response);    
                }    
                */
    
                UserDao dao = new UserDaoImpl();    
                User u = dao.login(username, password);    
                HttpSession session = request.getSession();    
                if(u!=null){    
                        session.setAttribute("user", u);    
                        request.getRequestDispatcher("/pages/successfull.jsp").forward(request, response);    
                }else{    
                        request.getRequestDispatcher("/pages/failure.jsp").forward(request, response);    
                }    
        }    

        /**    
         * Initialization of the servlet. <br>    
         *    
         * @throws ServletException if an error occurs    
         */
    
        public void init() throws ServletException {    
                // Put your code here    
        }    


UserDaoImplTest.java
image
ConnectionUtil.java
image
SQLConstants.java
package com.redking.util;    

public interface SQLConstants {    
        public static final String USER_LOGIN_SQL = " select id,username,password from UserTbl " + " where username= ? and password = ? ";    

User.java
image
DBConfig.properties
image
login.jsp
image
successfull.jsp
image
failure.jsp
image
测试:
image
登录成功
image
测试数据库中没有的用户登录试试
image
测试结果
image
现在我们将51cto帐号加入DB再测试
image
51cto帐户重新登录
image
测试结果
image
--------------------------------NEXT------------------------------------- 
? 使用Struts来开发用户登录 
–将Struts添加到上述存在的工程,看一下Struts是怎么样运行的。
加载Struts框架所需JAR包,加载到工程的LIB目录中
image
image
image
导入ActionServlet配置文件
image
image
松耦合配置文件Struts-config.xml
image
image
image
image
image
生成最基本的配置模板
image
LoginAction.java
image
login.jsp
image
web.xml
image
测试:
image
登录成功
image
再次测试错误密码
image
登录失败
image





本文转自redking51CTO博客,原文链接:http://blog.51cto.com/redking/357689,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JSP+Servlet培训班作业管理系统[23]–番外篇之Java Web日志
本文目录 1. 本章任务 2. 基础类库 3. 自定义异常处理工具类 4. 测试验证
65 0
JSP+Servlet培训班作业管理系统[22]–番外篇之过滤器与权限管理
本文目录 1. 本章任务 2. 开发过滤器类 3. 过滤器拦截 4. 过滤器通过 5. 权限管理的实现
46 0
JSP+Servlet培训班作业管理系统[6]–Mysql数据库结构设计
本文目录 1. 本章任务 2. 实体有哪些 3. 实体之间的联系 4. 总结
49 0
JSP+Servlet培训班作业管理系统[18]–教师角色之作业题目管理功能实现
本文目录 1. 本章任务 2. 代码实现 2.1 添加菜单 2.2 加载教师所管理的作业 2.3 显示作业题目列表 2.4 作业题目新增功能实现 2.5 作业题目编辑功能的实现 3. 总结
79 0
JSP+Servlet培训班作业管理系统[8]–实体模型类开发
本文目录 1. 本章任务 2. 代码实现 3. 总结
70 0
[Servlet&JSP] 从JSP到Servlet
JSP与Servlet是一体的两面,JSP最后都会被容器转译为Servlet源代码,自动编译为.class文件,载入.class文件然后生成Servlet对象。 由容器转译后的Servlet类具有_jspInit()、_jspDestroy()、_jspService()等方法,名称中有下划线前缀,表示这些方法都是容器转译时维护的,我们不应该从写这些方法。如果想要做些JSP
1287 0
[Servlet&JSP] 标准标签
在JSP的规范中提供了一些标准标签(Standard Tag),所有的容器都支持这些标签,它可以协助编写JSP时减少Scriptlet的使用。所有的标准标签都使用jsp:作为前置。这些标准标签是在JSP早起的规范中提出的,后来提出的JSTL(JSP Standard Tag Library)与表达式语言(Expression Language)在许多功能上都可以体态原有的标准
1019 0
[Servlet&JSP] 表达式语言EL
EL简介 对于JSP中一些简单的属性、请求参数、标头与Cookie等信息的取得,一些简单的运算或判断,可以使用表达式语言来处理,还可以将一些常用的功用函数编写为EL函数,这样可以减少网页上一部分的Scriptlet。 例如,对于以下的Scriptlet: &lt;% String a = request.getParameter("a"); Stri
1471 0
+关注
6819
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载