JSP页面中用struts2框架如何从数据库中取出数据(求详解)?急用

JSP页面中用struts2框架如何从数据库中取出数据(求详解)?急用,第1张

struts2更多涉及的是前端界面和控制流转的内容,从数据库取数据的事情还要使用其他的方法,如一般与其配合使用的Hibernate,或者直接使用JDBC到数据库里去查都是可以的,具体怎么用你可以到网上查一下,或者你决定用哪个再问我也是可以的

对于如何把struts2的action中的值传到jsp页面中,主要的方法有2种:

使用转发视图利用request域中储存所需的值

使用重定向时存储数据进入session使其在jsp中可以获得

下面,让我们分先后的讲解这2种方法!

一、转发到jsp:

准备步骤:

jsp页面随时准备使用el表达式获取request中的值,

action中的值分2种,一种是在方法中诞生的,作用域也是方法内;一种是定义为类成员(并带有get,set或者为public),此种方式只需赋值。

2. *** 作流程:

对于action的类属性,直接为其赋值(例如 message="Test"),然后在jsp页面中使用el表达式取出这个值(${message },直接以类属性名称取值即可,el默认的取值域就是request,struts2会将action的所有带有get,set(这两个方法必须同时有)的属性自动的放入request域中【当然你也可以使用struts的标签库,不推荐】)

对于action中方法中产生的数据,又不想为其在action类中定义对应的成员,我们可以手动的将其存放进入request域中,在struts2中,有2种方式可以将数据存入request中。

(1)一种是通过ActionContext.getContext().put("message",message)直接放入将数据request域中,不获取request本身,获取其

中的Map;

(2)另一种是使用ServletActionContext.getRequest().setAttribute("message",message)直接取得request对象,再使用

request对象的方法setAttribute()方法存入数据!将数据存入request中后,jsp中取值并无差别(同上)!

二、重定向到jsp:

准备步骤:同上!不同处是不管要存入的数据是不是类的属性,我们都必须在方法中进行处理才能将数据存入session,而不能依靠struts2自动帮我们搞定!

*** 作流程:

不管数据是哪里诞生的,得到数据后!比如为message;同上的第二种情况:也有2中方式将数据存入到session中:

(1)在方法中通过ActionContext().getContext().getSession().put("message",message)首先获取session中的map,再使用Map接口的方法put()存入数据

(2)在方法中通过ServletActionContext().getRequest().getSession().setAttribute("message",message)首先获取session对象,再使用session对象的setAttribute方法将数据存入session域。

最后,不管那种方式将数据存入到session中,我们都可在jsp页面中获取session中的值,例如${sessionScope.message }

三、总结:

不论如何,总是将数据存入tomcat提供的几个存数据的域中(request,session,application),然后在页面通过EL表达式获取即可!

怎样从数据库取数据在这就不要多讲了吧。

举一个用户登录的例子吧

用户类User

public class User{

private String user

private String pass

//此处省略user和pass两个setter和getter方法

}

login.jsp页面

<html>

//登录的action,从jsp到action的传值

<action name="login" method="post">

<input type="text" name="user" />

<input type="text" name="pass" />

</action>

//显示信息,从action到jsp的传值

${msg}

</html>

Action类

import com.opensymphony.xwork2.ActionSupport.*

public class LoginAction extends .ActionSupport{

private String user

private String pass

//此处省略user和pass两个setter和getter方法,且必须要有这两个setter和getter方法

public String execute() throws Exception{

//创建ActionContext实例

ActionContext ctx = ActionContext.getContext()

//validLogin(user,pass)业务逻辑方法自己定义

//boolean valid = validLogin(user,pass)

boolean valid = true

if (valid) {

//关键所在,相当于servlet的request.setAttribute(String key , Object value)方法

ctx.put("msg" , "欢迎"+user+"用户登录")

return SUCCESS

}

else{

ctx.put("msg" , "用户名或密码错误")

return ERROR

}

}

}

struts.xml文件

<action name="login" class="LoginAction">

<result name="success">welcome.jsp</result>

<result name="error">login.jsp</result>

</action>

welcome.jsp

<html>

${msg}

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6687188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存