struts 2使用步骤(struts2怎么使用)

:暂无数据 2026-06-23 19:30:06 :1

struts 2使用步骤(struts2怎么使用)

这篇文章给大家聊聊关于struts 2使用步骤,以及struts2怎么使用对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

struts2怎么使用

一、下载Jar包

从Apache网站下载Struts2的Jar包。

回到顶部

二、部署Struts.xml和Web.xml

打开压缩包中的Blank实例,copy其中的Struts.xml到项目的src目录下,copy其中的Web.xml中的filter部分到项目中的web.cml中。

回到顶部

三、复制Jar包

copy blank实例中lib目录中的所有Jar包到项目中的lib目录下。

回到顶部

四、写Action类

一般来说Action就是MVC中的Controller,Action一般要继承ActionSupport类

在里面写各种处理的方法即可。

回到顶部

五、配置Struts.xml

用Struts2实现在网站登录 写出过程步骤及核心代码

登录有两种实现:表单提交和Ajax,给你介绍下表单提交。
步骤一:页面一个文本框一个密码框分别填写帐号和密码,再一个提交按钮用于表单提交:
《% String root = request.getContextPath(); %》
《form action="《%=root%》/doLogin.action" method="post"》
《input name="loginCode"/》
《input name="password" type="password"/》
《input type="submit"/》
《/form》
步骤二:编写后台登录Action
public class LoginAction extends ActionSupport{
private String loginCode;
private String password;
public String getLoginCode() {
return loginCode;
}
public void setLoginCode(String loginCode) {
this.loginCode = loginCode;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

//登录核心方法
public void doLogin(){
//根据用户添入的帐号和密码调用帐号密码验证方法(这个验证方法自己实现)
boolean result = checkLogin(loginCode,password);
if(result){
return SUCCESS;
}else{
return ERROR;
}
}
}
步骤三:编写struts.xml配置文件
《action name="doLogin" class="步骤二的类package+LoginAction " method="步骤二的类中登录方法名doLogin"》
《result name="success"》登录成功跳转的页面《/result》
《result name="error"》登录验证失败后跳转的页面《/result》
《/action》

struts2国际化在js里面怎么使用

一、struts2国际化比较简单,过程如下:
1. 建立资源文件
中文资源:language_zh_CN.properties (language-自定义名称,zh-中文,CN-中国)
英文资源:language_en_US.properties (language保持一致,en-英文,US-美国)
其内容就是键值对,俩资源文件的键名对应保持一致,值分别对应中文与英文
其中中文在MyEclipse环境下,用Properties进行,直接输入中文
如:password 密码
那么从Source看时,就可看到中文是用Unicode表示的
如:password=\u5BC6\u7801
2. 配置
struts.xml文件中,配置i18n的源,值取资源文件的自定义名称部分(如果资源文件不是在src下,记得加上包路径):
《constant name="struts.custom.i18n.resources" value="language"》《/constant》
web.xml文件中,配置Struts2:
《filter》
《filter-name》struts2《/filter-name》
《filter-class》org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter《/filter-class》
《/filter》
《filter-mapping》
《filter-name》struts2《/filter-name》
《url-pattern》/*《/url-pattern》
《/filter-mapping》
3. jsp中使用资源
加入标签引用:《%@ taglib prefix="s" uri="/struts-tags" %》
s:text标签用健名取资源值:《s:text name="password"/》
或者表单元素用:key="password"
4. 在action中使用资源
用ActionSupport类中的方法取资源值:getText("password");
二、js中要获取以上的资源值,就比较麻烦了
单独建立一套资源的话,就需要维护两套资源,重复且维护麻烦
1. js中使用量较少时,可在jsp页面中定义变量先取出资源值
用js代码如:var curPassword=’《s:text name="password"/》’;
或:var curLang = {
password : ’《s:text name="password"/》’,
user : ’《s:text name="user"/》’
}
那单独的js文件中就可直接使用了
2. 另外想到的是从Java资源中全部取出,在js中再建立一个语言的对象
struts国际化,是建立在java国际化之上,做了一次封装
java国际化,用到的有两个类:Locale、ResourceBundle
Locale是语言类,选定当前的语言与地域,如:Locale locale = new Locale("zh","CN");
ResourceBundle是资源类,加载的是资源
如:ResourceBundle bundle = new ResourceBundle.getBundle("language",locale);
有个方法可取键值:bundle.getString("password");
找到一个方法可取全部键名:Set《String》 keys=bundle.keySet();
好,再看Struts2中如何取ResourceBundle对象:
ActionSupport类中方法:ResourceBundle bundle=getTexts("langauge");
Action中添加方法:
protected String getCurLang(String resourceName){
ResourceBundle bundle=getTexts(resourceName);
if(null != bundle){
Set《String》 keys=bundle.keySet();
Iterator《String》 it = keys.iterator();
StringBuffer curLang = new StringBuffer();
curLang.append("{");
int id=0;
String key;
while(it.hasNext()){
key=it.next();
if(id》0){
curLang.append(",");
}
curLang.append(key);
curLang.append(":\’");
curLang.append(getText(key));
curLang.append("\’");
id++;
}
curLang.append("}");
return curLang.toString();
}
return "";
}
然后放入session中:session.setAttribute("curLang",getCurLang("langauge"));
或前台调用Ajex通讯取得
最后,前台把它转为对象,如:
var strvar curLang="《%=session.getAttribute("curLang")%》";
那么js文件中就可直接使用了:curLang;

struts2的处理流程

1、客户端向Servlet容器(如Tomcat)提交一个请求
2、请求经过一系列过滤器(如ActionContextCleanUp (已被JVM和WEB容器废弃的空对象) 过滤器等)
3、核心控制器被调用,询问ActionMapper来决定请求是否需要调用某个Action
4、如果ActionMapper决定需要调用某个Action,核心控制器把控制权委派给ActionProxy (备注:JSP请求无需调用Action)
5、ActionProxy通过Configuration Manager询问框架的配置文件(struts.xml),找到需调用的Action类
6、ActionProxy创建一个ActionInvocation的实例,(ActionInvocation的作用是如何执行Action,拦截器的功能就是在ActionInvocation中实现的)
7、ActionInvocation负责调用Action,在此之前会依次调用所有配置的拦截器
8、Action执行完毕,ActionInvocation负责根据结果码字符串在struts.xml的配置中找到对应的返回结果
9、拦截器被再次执行
10、过滤器被再次执行

谁知道struts2做增删改查的详细步骤

那要看你使用了那些框架咯,一般来说分为三层

第一层是表层:就是action那部分,响应jsp操作

第二层是service层:就是进行逻辑操作的。

第三层是持久层(DAO):就是进行数据库操作的

比如,增加一个留言(Message)的操作。在action层中将这个Message封装好,重写excute()方法。

调用Service层的方法,进行一些逻辑性的操作,最后到持久层DAO将这个Message对象加入数据库。

我有一个SSH的代码可以看下。 (只贴出了代码,还有一些配置文件省略了)

action:

public class AddMessage extends ActionSupport {

private String content;

private String username;

private String visior;

private MessageService messageService;

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

。。。。。//还有其他的set() get()方法省略

@Override

public String execute() throws Exception {

Map session = ActionContext.getContext().getSession();

HttpServletRequest request = ServletActionContext.getRequest();

String username = (String) session.get("username");

String visitor = (String)session.get("visitor");

if (null == username || "".equals(username)) {

return ERROR;

} else {

  • // 封装Message

  • Message message = new Message();

  • message.setUsername(username);

  • message.setContent(content);

  • if(visitor == null){

  • message.setVisitor("游客");

  • }else{

  • message.setVisitor(visitor);

  • }

  • message.setDate(new Date());

  • messageService.addMessage(message);  //这里调用Service层的方法

  • return this.SUCCESS;

}

}

}


service层:

接口:

public interface MessageService {

//添加留言

public void addMessage(Message message);

//删除留言

public void deleteMessage(int id);

//分页查询留言

public Result showUserMessageByPage(String username,Page page);

}

实现类:

public class MessageServiceImpl implements MessageService {

private MessageDAO messageDAO;

public MessageDAO getMessageDAO() {

return messageDAO;

}

public void setMessageDAO(MessageDAO messageDAO) {

this.messageDAO = messageDAO;

}

  • //刚刚调用的service方法

  • public void addMessage(Message message) {

  • messageDAO.add(message);//这里调用了DAO层的方法,将数据保存到数据库

  • }

public void deleteMessage(int id) {

messageDAO.deleteMessage(id);

}

public Result showUserMessageByPage(String username, Page page) {

page = PageUtil.createPage(page,messageDAO.queryUserAllCount(username));

List《Message》 all = messageDAO.queryByPage(username, page);

Result result = new Result();

result.setPage(page);

result.setList(all);

return result;

}

}

DAO层:

(接口)

public interface MessageDAO {

//添加留言

public void add(Message message);

//删除留言

public boolean deleteMessage(int id);

//查询某个用会员的全部留言

public List《Message》 queryByPage(String username,Page page);

//按照ID俩查询留言

public Message queryById(int id);

//查询数据库中某用户所有留言数目

public int queryUserAllCount(String username);

//获取所访问的用户ID

public int UserID();

}

(实现类)

public class MessageDAOImpl extends HibernateDaoSupport implements MessageDAO {

  • //这里是刚刚调用的add方法

  • public void add(Message message) {

  • this.getHibernateTemplate().save(message);//这里就把message存入数据库中了

  • }

public boolean deleteMessage(int id) {

this.getHibernateTemplate().delete(this.queryById(id));

return false;

}

public Message queryById(int id) {

List《Message》 find = this.getHibernateTemplate().find("select meg from Message meg where meg.id = ?", id);

return (Message) find.get(0);

}

public List《Message》 queryByPage(final String username,final Page page) {

return this.getHibernateTemplate().executeFind(new HibernateCallback() {

public Object doInHibernate(Session session)

throws HibernateException, SQLException {

Query query = session.createQuery("select meg from Message meg where meg.username = ? order by meg.date desc");

//设置查询的用户

query.setParameter(0, username);

//设置查询的最大数

query.setMaxResults(page.getEveryPage());

//设置从哪里开始查询

query.setFirstResult(page.getBeginIndex());

return query.list();

}

});

}

public int queryUserAllCount(String username) {

List find = this.getHibernateTemplate().find("select count(*) from Message meg where meg.username = ?",username);

return ((Long)find.get(0)).intValue();

}

public int UserID() {

// TODO Auto-generated method stub

return 0;

}

}

其他的操作类似

如果你还想了解更多这方面的信息,记得收藏关注本站。

struts 2使用步骤(struts2怎么使用)

本文编辑:admin

更多文章:


怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

大家好,怎么做网站网页归档相信很多的网友都不是很明白,包括网页应该怎么做网页设计有哪些要求也是一样,不过没有关系,接下来就来为大家分享关于怎么做网站网页归档和网页应该怎么做网页设计有哪些要求的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年10月11日 05:30

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

本篇文章给大家谈谈二郎腿贴地,以及跷二郎腿太低好吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 05:10

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

本篇文章给大家谈谈易语言点击js按钮,以及易语言网页填表怎样点击链接为“javascript:void(0)“的按钮对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要

2026年10月11日 03:00

regards(Regards,什么意思)

regards(Regards,什么意思)

其实regards的问题并不复杂,但是又很多的朋友都不太了解Regards,什么意思,因此呢,今天小编就来为大家分享regards的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:10

dom4j文档(如何去掉用dom4j生成的XML文档中的)

dom4j文档(如何去掉用dom4j生成的XML文档中的)

其实dom4j文档的问题并不复杂,但是又很多的朋友都不太了解如何去掉用dom4j生成的XML文档中的,因此呢,今天小编就来为大家分享dom4j文档的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:00

compare with造句(用compared with和compared to造句)

compare with造句(用compared with和compared to造句)

“compare with造句”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看compare with造句(用compared with和compared to造句)!

2026年10月10日 23:30

xshell软件(Xshell怎么更改字体大小)

xshell软件(Xshell怎么更改字体大小)

各位老铁们好,相信很多人对xshell软件都不是特别的了解,因此呢,今天就来为大家分享下关于xshell软件以及Xshell怎么更改字体大小的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月10日 22:50

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

各位老铁们好,相信很多人对tensorflow与keras对应版本都不是特别的了解,因此呢,今天就来为大家分享下关于tensorflow与keras对应版本以及为什么tensorflow2.8没有keras的问题知识,还望可以帮助大家,解决

2026年10月10日 22:10

个人网站首页界面(深圳社会保险服务个人网页主页)

个人网站首页界面(深圳社会保险服务个人网页主页)

“个人网站首页界面”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看个人网站首页界面(深圳社会保险服务个人网页主页)!

2026年10月10日 22:00

maven仓库jar网站(如何在maven仓库中添加jar包)

maven仓库jar网站(如何在maven仓库中添加jar包)

这篇文章给大家聊聊关于maven仓库jar网站,以及如何在maven仓库中添加jar包对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月10日 19:50

最近更新

热门文章

by网站域名444(444ppp现在是什么域名)
2026-08-19 20:20:31 浏览:13
韩国大片视频mv(韩国20个感人mv)
2026-07-11 13:10:02 浏览:12
标签列表