入门struts 1小项目

Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由

为什么会有struts:因为我们对mvc理解的不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展,所以我们有必要用一个统一的规范来开发项目(struts)

Struts 的好处: 程序更加规范化,开发效率提高了,可读性增加了,程序的可维护性增加了

运行原理:

一个请求从浏览器发送给web服务器,http://localhost:8080/web应用/action,web服务器首先解析主机à然后解析web应用的名称à在解析出资源名à转发给总司令ActionServlet(该类由struts框架提供给我们的无需编写,只需配置)àActionServlet有一个文件struts-config.xml,该文件配置了表单actionForm(军火库),还配置了action,以及他们之间的对应关系,当ActionServlet拿到命令后它会查询struts-config.xml文件去填充数据,把用户的数据填充到表单里边,à下个动作就是去调用指定的action(小队长),action去从表单中读取数据,à调用某个model(士兵,如service)完成任务,à完成任务把结果返回给ActionServlet总司令(返回一个执行的结果),–>总司令又去查询struts-config.xml文件,决定跳转到哪个jsp页面,à返回一个执行结果(形成静态html文件)à直接返回给web服务器à服务器再把静态页面以http响应给浏览器。

下面我们着手来写一个struts的登陆小项目。

登录小项目过程步骤: 新建web工程—>导入struts包—>编写login.jsp—>编写actionForm和action—>配置struts-config.xml—>编写ok.jsp和err.jsp —>配置web.xml —>测试

Struts.config.xml中的<action>中的scope指的是actionform的生命周期范围 struts中<action>的scope默认是session.

一、导入struts包。

我们把struts的jar文件拷贝到WEB-INF的lib文件夹下面,完成自动导入。

二、编写login.jsp文件。

在index.jsp里面添加:

<jsp:forward page=”/WEB-INF/login.jsp”></jsp:include>

在WEB-INF文件夹下面新建login.jsp文件。写入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   
    <title>My JSP 'login.jsp' starting page</title>
   
  </head>
 
  <body>
    <form action="/strutslogin/login.do" method="post">
    U:<input type="text" name="username"/><br/>
    P:<input type="password" name="password"/>
    <input type="submit" value="login"/>
    </form>
  </body>
</html>

三、编写我们的ActionForm。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.lpq.forms;
//这是一个用户表单,用于填充数据的
import org.apache.struts.action.ActionForm;

public class UserForm extends ActionForm{
    //定义属性【这里有个规范,就是我们定义属性名字的时候,应该和jsp页面的控件名称一样】
    //实际上是和set方法/get方法保持一致。
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

四、编写我们的Action。单例的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.lpq.actions;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.lpq.forms.UserForm;

public class LoginAction extends Action{
    //我们需要重写一个方法
    //execute会被自动调用,有点类似servlet/service
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            ServletRequest arg2, ServletResponse arg3) throws Exception {
        UserForm userForm = (UserForm)form;
//      System.out.println("用户名="+userForm.getUsername());
        if("123".equals(userForm.getPassword())){
            return mapping.findForward("ok");
        }else{
            return mapping.findForward("err");
        }
    }
}

五、配置struts-config.xml。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<!-- name是表单名字,可以随意写,但是我们建议取名规范,表单类名小写 -->
<!-- type用于指定表单类全路径 -->
<form-bean  name="userForm" type="com.lpq.forms.UserForm"/>
</form-beans>
<action-mappings>
<!-- 配置具体的一个action path:表示将来访问该action的资源名 -->
<!-- name:用于关联某个表单 -->
<!-- path:用于指定该action类的全路径 -->
<!-- scope 默认session session.setAttribute('userForm',userForm) -->
<action path="/login" name="userForm" type="com.lpq.actions.LoginAction">
<!-- 这里配置跳转关系 -->
<!-- name 表示结果名称path:转发到哪个页面 -->
<forward name="ok" path="/WEB-INF/wel.jsp"/>
<forward name="err" path="/WEB-INF/err.jsp"/>
</action>
</action-mappings>
</struts-config>

六、编写ok.jsp和err.jsp 。

七、配置web.xml 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <display-name />
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

除非注明,Coder文章均为原创,转载请以链接形式标明本文地址

本文地址:http://www.alonemonkey.com/struts-login.html

本文链接:http://www.alonemonkey.com/struts-login.html