? 什么是Struts框架
–从不同的角度看待Struts框架
–Struts框架的优点
? 下载安装Struts框架
–下载配置Struts框架
–测试Struts框架
–安装Struts应用程序
–访问Struts文档
? Struts 中常用组件
–ActionServlet
–Action
–ActionForm
–ActionMapping
–ActionForward
? 实例
–以登录为例,比较servlet+jsp和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框架
–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的其他优点
–对国际化的支持、声明式异常处理等。
–在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 框架的下载站点
– 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
? 安装struts-blank.war
–将该压缩包拷贝到tomcat的webapps目录下,重新启动tomcat,访问该工程:
http://localhost:8080/struts-blanck
? 安装struts-documentation.war
–将该压缩包拷贝到tomcat的webapps目录下,重新启动tomcat,访问该工程:
http://localhost:8080/struts-documentation
------------------------NEXT--------------------------------
Struts 中的组件介绍
? ActionServlet
–Struts中的大控制器
–Struts框架的入口
–是对Servlet的封装,被配置在web.xml配置文件当中
? Action
–小控制器,处理具体的业务逻辑用例
? ActionForm
–和表单对应的一个特殊的JavaBean,是一个“邮递员”在控制器和页面之间传递数据,也提供了一个集中的验证方法
? ActionMapping
–从Struts配置文件中读取配置信息
? ActionForward
–页面之间的跳转
–Struts中的大控制器
–Struts框架的入口
–是对Servlet的封装,被配置在web.xml配置文件当中
? Action
–小控制器,处理具体的业务逻辑用例
? ActionForm
–和表单对应的一个特殊的JavaBean,是一个“邮递员”在控制器和页面之间传递数据,也提供了一个集中的验证方法
? ActionMapping
–从Struts配置文件中读取配置信息
? ActionForward
–页面之间的跳转
------------------------------NEXT--------------------------------------
Struts 实例(以用户登录为例)
? Servlet+JSP 版本的登录
–为了比较servlet+jsp和Struts的区别与联系,我们首先看一下servlet+jsp如何创建用户登录
? Servlet+JSP 版本的登录
–为了比较servlet+jsp和Struts的区别与联系,我们首先看一下servlet+jsp如何创建用户登录
login.jsp
successfull.jsp
failure.jsp
LoginServlet.java
测试:
redking帐号登录
登录成功!
非redking帐号登录
登录失败
-------------------------------------NEXT--------------------------------
下面通过数据库查询来验证用户登录哈~
DB
UserDao.java
UserDaoImpl.java
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.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* 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.
*
* 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.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
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.
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet.
*
* 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.
*
* 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.
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
UserDaoImplTest.java
ConnectionUtil.java
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 = ? ";
}
public interface SQLConstants {
public static final String USER_LOGIN_SQL = " select id,username,password from UserTbl " + " where username= ? and password = ? ";
}
User.java
DBConfig.properties
login.jsp
successfull.jsp
failure.jsp
测试:
登录成功
测试数据库中没有的用户登录试试
测试结果
现在我们将51cto帐号加入DB再测试
51cto帐户重新登录
测试结果
--------------------------------NEXT-------------------------------------
? 使用Struts来开发用户登录
–将Struts添加到上述存在的工程,看一下Struts是怎么样运行的。
? 使用Struts来开发用户登录
–将Struts添加到上述存在的工程,看一下Struts是怎么样运行的。
加载Struts框架所需JAR包,加载到工程的LIB目录中
导入ActionServlet配置文件
松耦合配置文件Struts-config.xml
生成最基本的配置模板
LoginAction.java
login.jsp
web.xml
测试:
登录成功
再次测试错误密码
登录失败
---------------------------------END-----------------------------------