1.简单的struts框架使用,在eclipse下新建一个动态web项目,整体目录如下:
2.导入包
新建外部jar库,统一管理jar包
1.窗口->首选项->java->构建路径->用户库->新建->添加外部jar
构建路径,添加用户库
2.属性->java构建路径->添加库->用户库->选择需要的包
设置发布项目的时间将jar文件添加在web-INF下的lib文件
3.属性->developmentAssembly->选择
3.三层结构:po(视图层),dao(daoim)数据访问层,service(serviceImp),servlet业务逻辑层,业务逻辑层访问数据访问层
4.数据库连接池,在服务器上的context.xml中添加数据库配置信息
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="500" maxIdle="30" maxWait="10000"name="jdbc/gwfxsys"
password="chen123" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/gwfxsys"username="root"/>
编写dao层:
public classBaseDao {
//定义数据库连接对象
private Connection connection=null;
//定义参数化的执行对象
private PreparedStatement pment=null;
//定义过程化的执行对象
private CallableStatement cment=null;
//定义一个结果集对象
private ResultSet rs=null;
public BaseDao(){
}
/**
* 获取连接
*/
public void getConnection(){
try{
//从数据库连接池获取连接
Contextcxt=new InitialContext();
DataSourceds=(DataSource) cxt.lookup("java:comp/env/jdbc/oneDB");
connection=ds.getConnection();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 关闭数据库连接
*/
public void closeAllObject(){
//新建顺序反过来
try{
if(rs!=null){
rs.close();
}
if(pment!=null){
pment.close();
}
if(cment!=null){
cment.close();
}
if(connection!=null){
connection.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 执行update,insert,delete语句时使用,返回受影响的行数
* @param sSql
* @param oParams
* @return
*/
public int getNonQuery(String sSql,Object[] oParams){
int iNonQuery=0;
getConnection();
try{
pment=connection.prepareStatement(sSql);
if(oParams!=null&&oParams.length!=0){
for(int i=0;i<oParams.length;i++){
pment.setObject((i+1),oParams[i]);
}
}
iNonQuery=pment.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally {
closeAllObject();
}
return iNonQuery;
}
/**
* 获取查询数据集
* @param sSql
* @param oParams
* @return
*/
public ResultSetgetResultSet(String sSql,Object[]oParams){
rs=null;
getConnection();
try{
pment=connection.prepareStatement(sSql);
if(oParams!=null&&oParams.length!=0){
for(int i=0;i<oParams.length;i++){
pment.setObject((i+1),oParams[i]);
}
}
rs=pment.executeQuery();
}catch(Exception e){
e.printStackTrace();
}finally {
closeAllObject();
}
return rs;
}
}
Struts开发步骤:
1、 导入Struts需要的包,步骤如上导包统一管理
2、 在web.xml中添加Struts核心处理类
<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、 编写control的action层
package com.action;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.struts2.interceptor.ServletRequestAware;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
importcom.opensymphony.xwork2.ModelDriven;
import com.po.User;
importcom.service.IUserService;
importcom.service.imp.UserService;
publicclass LoginAction extends ActionSupport implements ModelDriven<User> ,ServletRequestAware {
private static final longserialVersionUID = 1L;
private User user=new User();
private HttpServletRequest request;
private String sUserName;
private String sPassWord;
@Override
public User getModel() {
// TODO 自动生成的方法存根
return user;
}
@Override
public String execute() throws Exception{
// TODO 自动生成的方法存根
User flag=null;
User user=new User(sUserName,sPassWord);
IUserService userService=newUserService();
flag=userService.findUserByLogin(user);
if(flag!=null){
ActionContextcontext=ActionContext.getContext();
context.getSession().put("user",user);
return "ok";
}
else{
return INPUT;
}
}
//重写炎症
@Override
public void validate() {
// TODO 自动生成的方法存根
sUserName=request.getParameter("username");
sPassWord=request.getParameter("password");
if(null==sUserName||""==sUserName)
{
this.addFieldError("username","null is not allow!");
}
if(null==sPassWord||""==sPassWord)
{
this.addFieldError("password","null is not allow!");
}
}
@Override
public voidsetServletRequest(HttpServletRequest arg0) {
// TODO 自动生成的方法存根
request=arg0;
}
}
4.编写Struts的配置文件(struts.xml的命名一定,否则会爆找不到的文件错误)
struts.xml文件内容:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"value="false" />
<constant name="struts.devMode" value="true" />
<include file="structs_cfg.xml"/>
</struts>
structs_cfg.xml文件内容:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="name" namespace="/"extends="struts-default">
<action name="loginAction" class="com.action.LoginAction">
<result name="ok">welcome.jsp</result>
<result name="input">error.jsp</result>
</action>
</package>
</struts>