Struts源码解析

Struts源码解析

Struts源码解析

一、先在官网 https://struts.apache.org/download.cgi#struts2520 下载最新版本的 Full Distribution,里面包括开发包、文档和源码等。 二、在 Eclipse 新建一个 Dynamic Web Project 项目 三、在步骤一下载的 struts-2.5.20-all 的lib里面找到核心jar包,然后将其引入项目的lib中

struts-2.5.20-all 核心jar包 四、配置 web.xml 在web.xml中设置过滤器,将用户所有请求拦截交给Struts2处理

//过滤器

Struts2 //Filter的名称

//Filter的类名称

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter //Struts2核心控制器

//filter-mapping即过滤器映射。过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个servlet中会造成过滤器

//作用于servlet上。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。

Struts2 //< filter-name>Filter的名称< /filter-name>

/* //< url-pattern>URL< /url-pattern> /* 表示可以匹配所有的请求,即所有的请求都会经过该标签对应的Servlet

五、配置struts2框架各个层 view层,即视图层 WebContent目录下login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

Insert title here

用户名:

密码:

controller层,控制器,导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,再返回响应结果。 hsx.com.action.UserAction.java

//属性驱动(FieldDriven)

package hsx.com.action;

import com.opensymphony.xwork2.ActionSupport;

import hsx.com.model.User;

import hsx.com.service.UserService;

public class UserAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private UserService userService = new UserService();

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;

}

public String execute() throws Exception {

System.out.println("执行了UserAction的默认方法");

User user = new User();

user.setUserName(userName);

user.setPassword(password);

if (userService.login(user)) {

return SUCCESS;

} else {

return ERROR;

}

}

}

service层,存放业务逻辑处理,也是一些关于数据库处理的操作。hsx.com.service.UserService.java

package hsx.com.service;

import hsx.com.model.User;

public class UserService {

public boolean login(User user){

if ("admin".equals(user.getUserName())&&"123456".equals(user.getPassword())) {

return true;

}else {

return false;

}

}

}

model层,存放实体类,与数据库中的属性值基本保持一致 。hsx.com.model.User.java

package hsx.com.model;

public class User {

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;

}

}

六、配置struts.xml 在项目的src下新建一个配置文件:struts.xml。struts.xml里的映射将URL,控制器和视图绑定在一起。映射告诉Struts 2框架哪个类将响应用户的操作(URL),该类的哪个方法将被执行,以及基于该方法返回的String结果呈现什么视图。

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

//package配置:name包名,extends继承,namespace包命名空间,abstract抽象包

//action配置:name action名,class处理类,method方法

success.jsp

error.jsp

${pageContext.request.contextPath}/success.jsp

${pageContext.request.contextPath}/error.jsp

${pageContext.request.contextPath}/success.jsp //默认转发

${pageContext.request.contextPath}/success.jsp //重定向

hello2 //chain链条,相当于内部转发到一个新的action

hello2 //redirectAction重定向到action


易客满/ECMS怎么样
淘宝站内信如何发?