Struts2【入门】(一)

简介: 这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….

为什么要引入struts?

既然Servlet能够完成的事,我们为啥要用框架呢??

  • 框架帮我们封装了很多常用的功能
  • 把Web带过来的参数自动封装到JavaBean中[以前,我们刚开始学的时候是单个单个来获取参数的,后来我们又使用了BeanUtils写工具方法来帮我们封装]。现在,我们使用了Struts2的话,那么框架内部就能帮我们封装了。
  • 更加灵活[不用把路径等信息写死在程序上],对于路径我们使用配置文件来进行管理,如果目录发生了变化,也不用一个一个去修改每个程序的路径。
  • 每个Servlet中都有doGet和doPost这样的方法,没必要的。我们抽取出来,通过配置文件来把这两个方法替换掉,那么我们的程序就会更加优雅了。

于是乎,struts2就应运而生了。


自定义struts

在正式讲解struts之前,我们来看一下,以我们现在的水平,能够怎么优化它。。

以用户的登陆注册案例来进行说明

传统的用户登陆注册

dao

        if ("aaa".equals(user.getUsername()) && "123".equals(user.getPsd())) {
            System.out.println("登陆成功!");
            return user;
        } else {
            System.out.println("登陆失败!");
            return null;
        }
    }
    public void register(User user) {
        System.out.println("注册成功!" + user.getUsername());
    }
}

service

public class UserService {
    private UserDao userDao = new UserDao();
    public User longin(User user) {
        return userDao.login(user);
    }
    public void register(User user) {
        userDao.register(user);
    }
}

loginServlet

@javax.servlet.annotation.WebServlet(name = "LoginServlet",urlPatterns = "/LoginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        //得到用户带过来的数据,封装到Bean对象中
        String username = request.getParameter("username");
        String psd = request.getParameter("psd");
        User user = new User();
        user.setPsd(psd);
        user.setUsername(username);
        try {
            //调用Service方法
            UserService userService = new UserService();
            userService.longin(user);
            //登陆成功跳转到首页
            request.getRequestDispatcher("/index.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
            //登陆失败,跳转到相关的提示页面
            request.setAttribute("message","登陆失败了!!!");
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }
    }
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        this.doPost(request, response);
    }
}

registerServlet

@javax.servlet.annotation.WebServlet(name = "RegisterServlet",urlPatterns = "/RegisterServlet")
public class RegisterServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        //得到用户带过来的数据,封装到Bean对象中
        String username = request.getParameter("username");
        String psd = request.getParameter("psd");
        User user = new User();
        user.setPsd(psd);
        user.setUsername(username);
        try {
            //调用Service方法
            UserService userService = new UserService();
            userService.register(user);
            //注册成功跳转到登陆界面
            request.getRequestDispatcher("/login.jsp").forward(request, response);
            //注册成功,我也可以跳转到首页
            //request.getRequestDispatcher("/index.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
            //注册失败,跳转到相关的提示页面
            request.setAttribute("message","注册失败了!!!");
            request.getRequestDispatcher("/message.jsp").forward(request, response);
        }
    }
    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        this.doPost(request, response);
    }
}

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="${pageContext.request.contextPath}/LoginServlet" method="post">
    用户名:<input type="text " name="username">
    密码:<input type="password " name="psd">
    <input type="submit" value="登陆">
  </form>
  </body>
</html>

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="${pageContext.request.contextPath}/RegisterServlet" method="post">
    用户名:<input type="text " name="username">
    密码:<input type="password " name="psd">
    <input type="submit" value="注册">
  </form>
  </body>
</html>

上面的代码已经经过了测试,是可以跑起来的。

①:跳转页面的路径是写死的。我在注册成功了以后,我可以跳转到首页上,也可以跳转到登陆的界面上。如果我要选择其中的一个,就必须修改源代码

②:一个功能对应一个Servlet,太麻烦了…写了LoginServlet,还要写RegisterServlet….







目录
相关文章
|
前端开发 Java Apache
struts2学习笔记
struts2学习笔记
|
XML 前端开发 Java
struts2学习笔记(上)
struts2学习笔记(上)
struts2学习笔记(上)
|
Java API 数据安全/隐私保护
struts2学习笔记(下)
struts2学习笔记(下)
struts2学习笔记(下)
|
XML Java 数据格式
Struts2入门 | 学习笔记
快速学习 Struts2入门,介绍了 Struts2入门系统机制, 以及在实际应用过程中如何使用。
94 0
Struts2入门 | 学习笔记
|
XML Java Apache
Struts2入门二 | 学习笔记
快速学习 Struts2入门二,介绍了 Struts2入门二系统机制, 以及在实际应用过程中如何使用。
92 0
Struts2入门二 | 学习笔记
|
XML 安全 Java
Struts2【入门】(四)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
118 0
Struts2【入门】(四)
|
XML Java 数据格式
Struts2【入门】(二)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
184 0
Struts2【入门】(二)
|
XML Java 数据格式
Struts2【入门】(三)
这是Strtus的开山篇,主要是引入struts框架…为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门….
162 0
Struts2【入门】(三)
|
开发框架 前端开发 Java
Struts 问题汇总|学习笔记
快速学习 Struts 问题汇总
|
XML 安全 Java
day25_day27_Struts2_学习回顾
day25_01_学习回顾    1、Struts2框架在三层架构中哪部分进行的再优化?    答:         表现层、MVC模式。2、Struts1和Struts2的一个显著区别是什么?    答:         Struts1的核心控制器是一个servlet。
1465 0
下一篇
DDNS